我有这些数组值:
$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';
}
但它不起作用。谢谢你的帮助!
答案 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()
不再小于数组中项目数的停止条件。
值得注意的是PHP有a number of functions有助于使用数组。