Может быть, это глупый вопрос, но я не понимаю, что происходит с длиной переменной, что происходит на каждом этапе?
$text = 'John';
$text[10] = 'Doe';
echo strlen($text);
//output will be 11
Почему будет var_dump($text)
дисплей string(11) "John D"
? Почему это не будет полное имя John Doe
?
Может кто-нибудь объяснить этот момент?
// creates a string John
$text = 'John';
// a string is an array of characters in PHP
// So this adds 1 character from the beginning of `Doe` i.e. D
// to occurance 10 of the array $text
// It can only add the 'D' as you are only loading 1 occurance i.e. [10]
$text[10] = 'Doe';
echo strlen($text); // = 11
echo $text; // 'John D`
// i.e. 11 characters
Чтобы сделать то, что вы хотите, используйте конкатенацию, как это
$text = 'John';
$text .= ' Doe';
Если вы действительно хотите, чтобы все пробелы
$text = 'John';
$text .= ' Doe';
Или, может быть
$text = sprintf('%s %s', 'John', 'Doe');
К строкам можно обращаться как к массивам, что вы и делаете с $ text [10]. Из-за внутренней работы все $text[10] = 'Doe';
do устанавливает 11-й символ в ‘D’.
Вам придется использовать какой-либо другой вид конкатенации строк.