【问题标题】:How to update one element of an array according to a condition on another element?如何根据另一个元素的条件更新数组的一个元素?
【发布时间】:2015-08-30 13:44:27
【问题描述】:

我有一个关联数组,其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 match associative-array key-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));
?>

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 2021-06-02
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多