繁体   English   中英

如何根据另一个元素的条件更新数组的一个元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM