我有一个小问题.我正在处理一些包装/产品清单.
如果您正在查看包裹,则我的网站应向您显示其中有哪些产品.
如果一个产品中有多个产品,则应删除该数组,剩余数组的值应为1(每个删除的数组).
所以这是我的代码:
// $products_in_package has all products in it
// First of all, the products come from a db and don't have a count
// So i first give them a count of 1
foreach ($products_in_package as $product => $value) {
$products_in_package[$product]['count'] = intval(1);
}
foreach ($products_in_package as $product) {
$id_to_find = intval($product['ID']);
$product_count = intval($product['count']);
$found_id = 0;
// Now I try to find any ident products
// If found and over 1 time (beacouse he finds the first too of course)
// Then delete this array and count up the products count
for ($i=0; $i <= count($products_in_package); $i++) {
if(intval($products_in_package[$i]['ID']) === $id_to_find){
$found_id++;
if($found_id > 1){
$product_count = $product_count + 1;
$product['count'] = $product_count;
unset($products_in_package[$i]);
array_merge($products_in_package);
while($i > $products_in_package){
$i = 0;
}
}
}
}
}
我得到的是正确的多维数组,但计数仍为1.
代码有什么问题?
每次我尝试记录代码时,我都会得到正确的整数. (不,我已经尝试删除该cheche)
但是,如果我将数组从循环中注销,则总得到的计数为1.
解决方法:
$product是数组元素的副本,因此当您执行$product [‘count’] = $product_count时,您将分配给副本,而不是原始数组.
您可以通过在foreach中使用参考来解决此问题:
foreach ($products_in_package as &$product) {
标签:arrays,php
来源: https://codeday.me/bug/20191119/2034525.html