<?php
$test = 'text1';
$test["02"] = "Hello";

var_dump($test);

आउटपुट है :: स्ट्रिंग (5) "teHt1"

php
0
Sumit Thakur 3 सितंबर 2021, 13:03

2 जवाब

सबसे बढ़िया उत्तर

पहली पंक्ति में $test ने मान को 'text1' के रूप में संग्रहीत किया, स्ट्रिंग के लिए बाएं से दाएं 0 से (स्ट्रिंगलेंथ -1) के लिए ऑफ़सेट मान देना शुरू करें और स्ट्रिंग में प्रत्येक वर्ण बाइट आकार स्मृति के एक बाइट पर कब्जा कर लेगा।

अर्थात,

...

$test[0] =>'t';
$test[1] =>'e';
$test[2]=>'x';
$test[3]=>'t';
$test[4]=> '1';

...

इसलिए, $test[2] वर्तमान मान 'x' के रूप में लेकिन हमें $test["02"] = "Hello" लाइन में ओवरराइड करने का प्रयास किया जाता है; लेकिन इसकी मेमोरी का आकार सिर्फ एक बाइट है इसलिए यह 'हैलो' में स्ट्रिंग से केवल 'H' संग्रहीत करता है

यही कारण है कि जब आप वैरिएबल को डंप करते हैं तो $test का मान अब "teHt1" हो जाता है;

1
Aishwarya m k 3 सितंबर 2021, 11:41

स्ट्रिंग्स सरणियाँ नहीं हैं, यहाँ तक कि आप ब्रैकेट नोटेशन का उपयोग कर सकते हैं। आप $test चर के दूसरे बाइट ऑफ़सेट को बदलने की कोशिश कर रहे हैं। इसलिए यह "हैलो" से पहला बाइट ऑफ़सेट लेता है और x को H से बदल देता है।

0
tahabas 3 सितंबर 2021, 10:51