简而言之,我从category_id,product_id和active activity标签下载。这个想法是,像分配给特定category_id的所有产品的值都是0,我显示回显“空”,否则“产品包含”,但foreach循环通过产品ID并显示空+ category_id一次,通过通过$ status和显示如此多的回显,有多少记录是活跃的。
查询没问题 - 我知道我不应该对数组执行逻辑操作,但是数据库是结构化的,所以我没有输出。
$result = array();
foreach ($products as $detail) {
$cid = $detail['category_id'];
$pid = $detail['product_id'];
$status = $detail['active'];
$result[$cid][$pid] = $status;
$multiplier = $result[$cid][$pid];
$counter = count($result[$cid]);
$multiplier2 = 1;
$multiplier = $multiplier * $multiplier2;
echo '$status: ' .$multiplier. " | ";
if ($multiplier == 0) {
echo '$cid: '.$cid.' | empty <br />';
} else {
echo '$cid: '.$cid.' | products contains <br />';
}
}
重复原因,但我不知道如何更改此代码中的代码
Array
(
[0] => Array
(
[product_id] => 1
[0] => 1
[category_id] => 221
[1] => 221
[active] => 0
[2] => 0
)
[1] => Array
(
[product_id] => 2
[0] => 2
[category_id] => 221
[1] => 221
[active] => 0
[2] => 0
)
)
$ result array
Array
(
[221] => Array
(
[1] => 0
[2] => 0
)
)
@EDIT
目前,该函数返回类似
的内容基于这个数组,它应该是这样的 - 你可以看到1437有=&gt; 1所以类别不是空的
答案 0 :(得分:0)
听起来你正试图从分散的列表中隔离出什么是空的(它听起来像是你可以做更好的查询)。看看这个迭代是否有助于过滤。
function getCategoryActivity($products)
{
$store = array();
foreach($products as $detail) {
$cid = $detail['category_id'];
$pid = $detail['product_id'];
# If the cid is not already stored, store it
if(!isset($store[$cid]))
$store[$cid] = $detail['active'];
else {
# If it's already set to active, ignore it
if(!empty($store[$cid]))
continue;
else
# Store it if not currently active
$store[$cid] = $detail['active'];
}
}
# Send back the filtered array
return $store;
}
# Fetch the filtered array
$sorted = getCategoryActivity($products);
$sorted
现在应该为您提供一个类别列表,其中包含活动而不包含活动。您可以使用array_map()
或其他foreach()
至echo
再次迭代您想要的内容。我不知道你试图用这个乘数部分做什么,所以我忽略了它。