数组符号差异php

时间:2011-02-25 16:38:48

标签: 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);
}

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

4 个答案:

答案 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是什么。