【发布时间】:2021-07-20 08:07:32
【问题描述】:
数组 $test_count
array ( 0 => array ( 0 => array ( 'it_id' => '212', 'item' => 'Item 1', 'quantity' => '5', ), 1 => array ( 'it_id' => '1206', 'item' => 'Item 2', 'quantity' => '1', ), 2 => array ( 'it_id' => '212', 'item' => 'Item 1', 'quantity' => '1', ), ), )
如果相同的数组it_id相同,如果相同的项目在数组中超过一次,我需要输出键数量值公共值。 每个项目都有 it_id(for id) 有值,item(for name) 有值,数量有值,以同样的方式比第二个项目......
现在的输出示例:
Item id : 212 Key quantity: 2
Item id : 1206 Key quantity: 1
输出代码:
foreach($test_count as $tempo => $lol){
foreach ($lol as $value1) {
$numbers1[$value1[it_id]]++;
}
foreach ($numbers1 as $key1 => $value1) {
if ($value1 > 1){
echo '<font style="color:red;"> Item id : '.$key1.' Key quantity: '.$value1.'</font><br/>';
}else{
echo 'Item id : '.$key1.' Key quantity: '.$value1.'<br/>';
}
}
}
现在我可以使用 id_it 在这个数组中找到多个项目并显示它们中有多少在数组中,但是 完全不知道如何计算数量,如何从同一个数组中获取多个键。 要得到这样的结果:
商品编号:212 关键数量:2 商品 1 数量:7
商品编号:1206 密钥数量:1 商品 2 数量:1
已解决,检查答案
小红包,如果您希望看到的结果不是数组,而是 几乎 用户友好的方式,这里是来自结果的表格代码:
代码
echo '<table rules="all" border="1">';
foreach($out as $name => $ar) {
foreach($ar as $v1 => $v2) {
echo sprintf('<tr><td>%s</td><td>%s</td><td>%s</td></tr>'."\r\n",
$name, $v1, $v2);
}
}
echo '</table>';
【问题讨论】:
-
你不应该做
$numbers1[$value1[it_id]]++,在没有确定$numbers1[$value1[it_id]]确实被设置的情况下,你需要在你第一次访问它的时候正确初始化它。 -
只需使用一个额外的数组维度 - 计算
$numbers1[$value1[it_id]]['number']下的数字,然后将$numbers1[$value1[it_id]]['quantity']下的数量相加,或类似的东西。 -
Ty,会试试的,因为根本不知道怎么做
-
@Amimistik 附注:请从下次开始缩进您的代码。这使代码更具可读性。另外,共享数组的 var_export() 而不是 print_r()
-
您是否只是编辑了您的问题以显示替代答案?请拨打tour。
标签: php arrays multidimensional-array