以下数组符号有什么区别:$ 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);
}
与
function test(){
$a = array(1,2,3,4,5);
foreach($a as $value){
$a[] = $value;
}
print_r($a);
}
答案 0 :(得分:5)
他们是不同的。
$a[] = 'foo';
向数组的 end 添加元素,为其创建新键(并增加数组的整体大小)。这与array_push($array, 'foo');
$key = 0;
$a[$key] = 'foo';
将数组的0
元素设置为foo
,它会覆盖该位置的值...数组的整体大小保持不变...这与{{ 1}}(但不要使用该语法)...
在您的具体情况下,他们正在做两件不同的事情。第一个$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)
总是在最后添加新的元素.... []
总是设置....
答案 1 :(得分:0)
$arr[$key] = $value
设置特定值的特定键。
$arr[] = $value
在数组的末尾添加一个值。
两者都不“更好”。他们扮演完全不同的角色。这就像比较写作和绘画。你可以用两支笔,但你使用的笔取决于具体情况。
答案 2 :(得分:0)
一个($a[$key] = $value
)你指定$key
如果你使用相同的密钥两次,PHP将覆盖该数组条目。
另一个($a[] = $value
)PHP正在处理密钥本身,只是使用下一个可用密钥添加数组条目。
你所做的全部事情虽然有点多余,但在第一个例子中,你试图循环遍历数组,将其值设置为自身。在第二个示例中,您正在复制数组。
答案 3 :(得分:0)
如果你想将一个元素附加到数组,我会使用
$arr[] = $value;
它更简单,您可以获得该行的所有信息,而不必知道$ key是什么。