![](/img/trans.png)
[英]How to swap element according to condition in PHP where there is array_map?
[英]How to update one element of an array according to a condition on another element?
我有一个关联数组的数组,其names
(这是assoc数组的键之一)如下所示:
{'Red', 'Blue', 'Green'}
现在,我有了另一个更大的数组,其中names
作为键之一。 喜欢
{'id'=>'23fe54','names'=>'Red','value'=>'3'},{'id'=>'90ks21','names'=>'Red','value'=>'4'},{'id'=>'44cb12','names'=>'Blue','value'=>'1'};
据此,我想更新较小的(第一个)数组。
较大数组的names
键告诉我们较小数组的哪个assoc数组需要更新。
然后,我想将value
添加到较小数组的字段之一。
问题是如何使用条件选择较短的数组:这两个字段是否匹配。 如何确保只有一个被更新?
编辑:预期的输出:
{'names'=>'Red','value'=>'7'},{'names'=>'Blue','value'=>'1'};
我会这样做:
<?php
$names = array('Red', 'Blue', 'Green');
$values = array(
array('id'=>'23fe54','names'=>'Red','value'=>'3'),
array('id'=>'90ks21','names'=>'Red','value'=>'4'),
array('id'=>'44cb12','names'=>'Blue','value'=>'1')
);
// prepare the result array
$results = array();
foreach($names as $name) {
$results[$name] = array('names' => $name, 'value' => 0);
}
// compute values
foreach($values as $value) {
$results[$value['names']]['value'] += $value['value'];
}
// keep only values
$results = array_values($results);
// print "jsonified" result
echo(json_encode($results));
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.