当前位置: 首页 > 知识库问答 >
问题:

使用PHP查找和更新多维数组值

安轶
2023-03-14

我找不到这个线程的合适标题(帮帮我)。我不能描述这个问题,所以这里是我的问题的例子。

我的数组:

Array ( [0] => Array ( [answer] => a [score] => 3 )
[1] => Array ([answer] => b [score] => 4 ) 
[2] => Array ( [answer] => h [score] => 3) 
[3] => Array ( [answer] => a [score] => 4 ))
...

我想得到这样的输出:

Array ( [0] => Array ( [answer] => a [score] => 7 )
[1] => Array ([answer] => b [score] => 4 ) 
[2] => Array ( [answer] => h [score] => 3))
...

您可以在索引键0中看到分数子键的更改。这是因为索引键0和3的应答子键中有两个值“a”。由于两者的总和(34),分数改为7分。我真的不知道该怎么做,对不起我的英语,谢谢你的帮助。请随意评论。:)

共有3个答案

黎腾
2023-03-14

我想到了使用临时数组

/* Current array */
$array = array(
    array("answer" => "a", "score" => 3),
    array("answer" => "b", "score" => 4),
    array("answer" => "h", "score" => 3),
    array("answer" => "a", "score" => 4)
);

/* Using a temporary array */
$tmp_array = array();
foreach($array as $subarray){
    if(array_key_exists($subarray["answer"], $tmp_array)){
        $tmp_array[$subarray["answer"]] += $subarray["score"];
    }else{
        $tmp_array[$subarray["answer"]] = $subarray["score"];
    }
}

/* Creating a new formatted array */
$new_array = array();
foreach($tmp_array as $key => $value){
    $new_array[] = array("answer" => $key, "score" => $value);
}

print_r($new_array);
容远
2023-03-14

检查此答案,不使用循环:

$arr  = array ( array ( 'answer' => 'a', 'score' => 3 ),
                array ( 'answer' => 'b', 'score' => 4 ), 
                array ( 'answer' => 'h', 'score' => 3), 
                array ( 'answer' => 'a', 'score' => 4 ));

$t = array_reduce($arr, function($result, $item) {
        if(array_key_exists($item['answer'],$result)){
           $result[$item['answer']]    = array('answer' => $item['answer'], 'score' => $item['score']+$result[$item['answer']]['score']);
        }
        else{
           $result[$item['answer']]    = array('answer' => $item['answer'], 'score' => $item['score']);
        }
    return $result;
},array()); 

echo "<pre>";
print_r($t);

输出:

Array
(
    [a] => Array
        (
            [answer] => a
            [score] => 7
        )

    [b] => Array
        (
            [answer] => b
            [score] => 4
        )

    [h] => Array
        (
            [answer] => h
            [score] => 3
        )

)
阴宏爽
2023-03-14
$merged = array();

foreach ($array as $answer) {
    if (isset($merged[$answer['answer']])) {
        $merged[$answer['answer']]['score'] += $answer['score'];
    } else {
        $merged[$answer['answer']] = $answer;
    }
}

var_dump($merged);
 类似资料:
  • 是否有任何预定义的PHP函数可以在多维数组中查找键? 在下面的示例中,有一个变量名“rose”,我需要使用该变量名获取数组的键。关键的结果是“花”。 我如何做到这一点?

  • 问题内容: 我有这个多维数组。我需要搜索它,仅返回与“ slug”的值匹配的键。我知道还有其他有关搜索多维数组的线程,但是我对这些情况的理解还不够。非常感谢您的帮助! 所以我需要一个像这样的函数: 这是数组: 问题答案: 很简单:

  • 主要内容:实例,实例,三维数组,实例多维数组是包含一个或多个数组的数组。 在多维数组中,主数组中的每一个元素也可以是一个数组,子数组中的每一个元素也可以是一个数组。 一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组,依照这种方式,我们可以创建二维或者三维数组。 二维数组语法格式: 以上数组的元素会自动分配键值,从 0 开始: 实例 <?php // 二维数组: $cars = array ( array ( " Vol

  • 问题内容: 我无法通过CURL将表单数据发布到位于不同主机上的接收PHP脚本。 我得到一个错误 这是我要发布的数组: 这是发生错误的行: 第三个参数 必须 是一个数组,因为在通过同一数组发送文件时,我需要将标头设置为该数组,因此无法将数组转换为查询字符串或使用。 另外,我无法访问接收主机上的代码,因此无法序列化和反序列化数组。 我假设 名称 键的值是数组是导致此错误的原因,我还假设它不支持多维数组

  • 问题内容: 我有两个numpy数组: 我想从p_rem中的p_a_colors中删除所有列,所以我得到: 我认为,某些事情应该像 但我只是不知道轴或[:]正确。 我知道 可以,但是我试图避免(python)循环,因为我也想要正确的性能。 问题答案: 这就是我要做的: 您需要执行void dtype事情,以便numpy整体比较行。之后,使用内置的set例程似乎是显而易见的方法。

  • 问题内容: 我有一个这样的PHP数组: 因此,如何通过url_id 获取基于组的SUM(使用array_count_values) 问题答案: 为什么不更简单