Это потому, что вы можете рассматривать любую строку в PHP как массив
$test = "Hello, World";
echo $test[0];
В результате будет отображаться "H". То, что вы говорите, код в
$field_names[$f][0] = $row['Key'];
- заменить первый символ в строке $ field_names [$ f] на $ row ['Key']. Однако, поскольку мы заменяем PHP только на 1 символ, он просто использует первый символ в $ row ['Key'], таким образом, вы получаете «Pield_name», «P» из PRI заменил на «F», который был в первом позиция в «массиве строк»
Я все еще не понимаю, что вы хотите сделать. Если бы вы могли отобразить, как вы хотите, чтобы массив выглядел после того, как вы вставили (?) $ Row ['Key']. Я могу помочь вам с кодом
EDIT:
Причина, по которой ваш верхний код работает, заключается в том, что вы просто не указываете ключ для первого элемента, который вы добавляете в массив:
$arr[]="first"; //Inserts string "first" at pos 0 of array same as $arr[0]="first";
$arr['first'][]=$somearr['some']; //Inserts array into $arr using key 'first'
echo "<br> Var dump of arr: " . var_dump($arr);
То же самое можно достичь с помощью этого кода
$arr =array(
0 => 'first',
'first' => $somearr['some']
)