数组符号差异php

use*_*265 0 php arrays

以下数组表示法有什么区别:$ arr [$ key] = $ value和$ arr [] = $ value,这是更好的方法吗?

function test(){
$key = 0;
$a = array(1,2,3,4,5);
foreach($a as $value){
   $a[$key] = $value;
   $key++;
}
print_r($a);
}
Run Code Online (Sandbox Code Playgroud)

function test(){
$a = array(1,2,3,4,5);
foreach($a as $value){
 $a[] = $value;
}
print_r($a);
}
Run Code Online (Sandbox Code Playgroud)

irc*_*ell 5

它们是不同的.

$a[] = 'foo';
Run Code Online (Sandbox Code Playgroud)

将元素添加到数组的末尾,为其创建新键(并增加数组的整体大小).这是一样的array_push($array, 'foo');

$key = 0;
$a[$key] = 'foo';
Run Code Online (Sandbox Code Playgroud)

设置0数组的元素foo,它覆盖该位置的值...数组的整体大小保持不变...这与$array = array_slice($array, 0, 1, 'foo');(但不使用该语法)相同...

在您的具体情况下,他们正在做两件不同的事情.第一个test函数将生成一个数组array(1,2,3,4,5),而第二个函数将生成一个数组array(1,2,3,4,5,1,2,3,4,5). []总是在最后添加新的元素.... [$key]总是设置....