Почему, имея массив из 5 чисел, получаем 6-е?
$arr='12345';
$arr[$arr[4]]='1';
Почему при выводе становится 123451, а если ставить
$arr[$arr[4]]='12';
то все равно результат 123451?
$arr='12345';
$arr[$arr[4]]='1';
Почему при выводе становится 123451, а если ставить
$arr[$arr[4]]='12';
то все равно результат 123451?
1) Синтаксис обращения к элементам строки подобно массивам, конечно, допустим, но вот данная конкретная форма а) неочевидно идентифицирует переменную как строку, б) считается устаревшей. Новый синтаксис для обращения к элементу строки:
$str = "12345";
print $str{4};
2) Увас появляется 5-й элемент потому, что $arr[4] возвращает подстроку '5', и далее в $arr['5'] устанавливается строка '1'. Преобразование символов в числа - отдельная тема.
3) Когда вы пытаетесь вставить в единичный элемент строки более, чем 1 символ, вставляется первый.
Посмотреть как пример работает в реале: онлайн-интерпретатор на eval.in
Ничего себе ты массивы чисел создаешь, строкой? Строка - это не массив. А ты работаешь со строкой:
$arr = array(1,2,3,4,5);
$arr[$arr[4]]=8;