Foreach进入PHP数组

时间:2016-01-29 15:26:57

标签: php arrays for-loop

我有这些数组值:

$cart_item['addons'][0]['price'] = '52';
$cart_item['addons'][1]['price'] = '34';
$cart_item['addons'][2]['price'] = '12';
......
....

我希望每个值都为0,如:

$cart_item['addons'][0]['price'] = '0';
$cart_item['addons'][1]['price'] = '0';
$cart_item['addons'][2]['price'] = '0';
....
...

所以我试试这段代码:

for ($i=0; $i > 0 ; $i++) { 
    $cart_item['addons'][$i]['price'] = '0';
}

但它不起作用。谢谢你的帮助!

5 个答案:

答案 0 :(得分:4)

尝试这个简单的解决方案:

$count=count($cart_item['addons']);
for($i=0; $i<$count;$i++ ){
  $cart_item['addons'][$i]['price'] = '0';
}

答案 1 :(得分:2)

如果你的数组足够大,那么将count()函数放在for循环中就是一个疯狂的问题。它将更多,更多更慢。请使用循环外的count

$count = count($cart_item['addons'])

for($i=0; $i<$count;$i++ ){
 $cart_item['addons'][$i]['price'] = '0';
}

答案 2 :(得分:1)

你必须更频繁地循环以实现这个目标:

foreach($cart_item['addons'] as &$addons {
    foreach($addons as &$addon) {
          $addon['price'] = 0;
    }
}

答案 3 :(得分:0)

您可以迭代$ cart_item [&#39;插件&#39;],如下所示:

foreach ($cart_item['addons'] AS $key => &$value) {
    $value['price'] = 0;
}

(您的代码未执行,因为$ i永远不会更改,因此永远不会> 0)

另请注意,在foreach循环中更改数组时需要使用引用(&$value)。

答案 4 :(得分:0)

for循环有三个部分:$i = 0; 。查看有关for循环的this guide可能很有用。您初始化变量:

$i > 0;

然后你做一个逻辑检查(测试部分):

$i

如果我们将变量(0)替换为它所拥有的值(0 > 0 ),我们得到:

$i++;

永远不会是真的,因此你永远不会到达for循环的最后一部分(动作):

$elementCount = count(cart_item['addons']);
for($i=0; $i < $elementCount; $i++){ 
    $cart_item['addons'][$i]['price'] = '0';
}

相反,你可以让它循环,直到它像你一样移动整个数组:

$i

每次循环播放时,我们都会向$i添加一个,直到我们达到format()不再小于数组中项目数的停止条件。

值得注意的是PHPa number of functions有助于使用数组。