我需要使用product_id
对子阵列进行分组并执行一些条件运算。
如果moving_type
为1
,则product_number
应增加当前product_id
的整体product_number
标记。或者,如果moving_type
为2
,那么整体product_number
总计应减少product_number
值。
这是我的输入数组:
Array
(
[0] => Array
(
[id] => 1
[product_id] => 4
[product_number] => 10
[moving_type] => 1
)
[1] => Array
(
[id] => 1
[product_id] => 5
[product_number] => 10
[moving_type] => 1 // product addition
)
[2] => Array
(
[id] => 1
[product_id] => 5
[product_number] => 2
[moving_type] => 2 // product minus
)
)
我想要的结果是:
Array
(
[0] => Array
(
[id] => 1
[product_id] => 4
[product_number] => 10
)
[1] => Array
(
[id] => 1
[product_id] => 5
[product_number] => 8 // as 10-2
)
)
答案 0 :(得分:0)
您可以使用foreach()
循环。在其中,您可以使用product_id
作为键创建一个新数组。您可以使用*=-1
更改product_number
的符号,如果该密钥已存在,请将当前的product_number添加到现有的。
$array = array(
array('id' => 1, 'product_id' => 4, 'product_number' => 10, 'moving_type' => 1),
array('id' => 1, 'product_id' => 5, 'product_number' => 10, 'moving_type' => 1),
array('id' => 1, 'product_id' => 5, 'product_number' => 2, 'moving_type' => 2)
);
$final = [];
foreach ($array as $item) {
$pid = $item['product_id'] ;
if ($item['moving_type'] == 2) $item['product_number'] *= -1;
unset($item['moving_type']);
if (!isset($final[$pid])) { $final[$pid] = $item ; }
else {
$final[$pid]['product_number'] += $item['product_number'] ;
}
}
$final = array_values($final);
print_r($final);
输出:
Array
(
[0] => Array
(
[id] => 1
[product_id] => 4
[product_number] => 10
)
[1] => Array
(
[id] => 1
[product_id] => 5
[product_number] => 8
)
)
答案 1 :(得分:0)
最有效地使用基于<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<script src="https://aframe.io/releases/0.8.2/aframe.min.js"></script>
<script src="https://cdn.rawgit.com/jeromeetienne/AR.js/1.5.5/aframe/build/aframe-ar.js"></script>
<body style='margin : 0px; overflow: hidden;'>
<a-scene embedded arjs='trackingMethod: best; debugUIEnabled: false;'>
<!--a-marker type='pattern' url='https://rawgit.com/germanviscuso/AR.js/master/data/data/patt.gafas'-->
<a-marker preset='hiro'>
<a-collada-model src="url(https://aframe.io/aframe/examples/showcase/shopping/man/man.dae)"></a-collada-model>
</a-marker>
<a-camera-static/>
</a-scene>
</body>
的临时密钥来确定您是在两个值之间执行算术还是仅仅声明product_id
的第一个出现值。
如果是第一次出现,只需将行的前三行切片并保留键(即product_id
部分)。
如果不是true
的第一次出现,那么您只需要更新product_id
元素。根据{{1}}值确定正确的操作 - 使用product_number
乘以moving_type
或product_number
,并将生成的值添加到存储的值。
循环结束后,您可以使用1
重新索引生成的数组。
代码:(Demo)
-1
输出:
array_values()