数组中的两种方式有什么不同


What different between the two way in array?

<?php
//I have an array like this
$ar = array('0', '1', '2', '3', '4', '5');
for($i = 0; $i < count($ar); $i++)
{
echo $ar[$i+1]; //way1
echo $ar[$i] +=1 //way2
}
?>

那么方式 1 和方式 2 之间有什么不同,因为我看到了相同的结果???

这里的区别在于使用赋值运算符和增量运算符。

第一种方式:

$ar[$i+1] 会在 $i + 1 的索引处打印数组元素,表示循环第一次迭代中的 1。

echo $ar[$i + 1];
     $ar[0 + 1];
     $ar[1];  

因此,它将查找索引 1 的值,即 1。

注意:循环时,当循环到达上次迭代时,您的语句将如下所示:

echo $ar[$i + 1];
     $ar[5 + 1];
     $ar[6];

它将显示未定义索引的通知,因为数组中未为索引 6 分配任何值。

以第二种方式:

这里使用增量运算符。所以语句会变成这样:

echo $ar[$i] = $ar[$i] + 1;

因此,首先,将 1 添加到 $ar[$] 中,然后分配给它。然后它将回显该更新的值。在循环的第一次迭代中,它将是:

echo $ar[$i] = $ar[$i] + 1;
     $ar[$i] =  0      + 1;
finally Ans will be 1; 

请澄清您在这里寻找的确切内容。

这两种是完全不同的方法,当您的数组值是其他东西时,会给出不同的结果。

echo $ar[$i+1];  // Means you're printing the values corresponding to array keys 1, 2, 3.....
echo $ar[$i] +=1 // Means you're getting the values of keys 0, 1, 2... and adding 1 to each of the values.

如果你有一个数组$ar = array(3, 6, 2, 10(,这两个将按这种方式工作:

echo $ar[$i+1]; // 6, 2, 10 ....
echo $ar[$i] +=1 // 4, 7, 3, 11....

希望这有帮助。

和平! xD

当然不是。

请注意,您的代码需要在way2";"

way1回显数组中的第 (i+1) 项。

way2回显i-th项的值+ 1

因此,如果更改数组,结果可能会有所不同。

例如

$ar = array('1','3','4');

然后

方式 1 将输出:

3,4并抓住一个OutOfRange Exception(因为它询问了不存在的$ar[3]

Way2 将输出:

2,4,5