以下数组表示法有什么区别:$ 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)
它们是不同的.
$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]总是设置....