【问题标题】:Convert multiple-dimensional array in to one dimensional array by summing the vaues like shown here通过对此处显示的值求和,将多维数组转换为一维数组
【发布时间】:2015-05-22 11:08:25
【问题描述】:
Array
(
[0] => Array
    (
        [0] => 17
        [1] => 111
    )
[1] => Array
    (
        [0] => 17
        [1] => 10
    )
[2] => Array
    (
        [0] => 20
        [1] => 111
    )
)

我想将此数组转换为:

array
(
  [17]=>121
  [20]=>111
)

是否有任何可以轻松完成的php数组函数。我知道另一种方式,但想知道是否有任何现成的功能可以做到这一点? 请帮忙。

这里我其实是想转换的

[0] => Array
    (
        [0] => 17
        [1] => 111
     )

17 键并取 111 作为值,然后在下一个数组中

 [1] => Array
    (
        [0] => 17
        [1] => 10
    )

做同样的事情,获取第一个值 17 作为键并将 10 添加到前一个值 111 这是 121 然后 [2] => 数组 ( [0] => 20 [1] => 111 ) 取 20 作为键并将值 111 分配给该键,所以基本上,我希望第一个值作为键,第二个值作为值,并且对于所有相同的键,我想添加值,如前所述。 我认为可能有任何 PHP 现成的函数,因为我已经看到 PHP 中有很多可用的数组处理函数。现在,我意识到没有任何这样的功能可用。我可以为此目的编写自己的自定义代码,但正在寻找好的逻辑解决方案。

【问题讨论】:

  • 那太特别了。您只能使用 foreach 或 array_walk 或任何东西,您可以在其中描述您的目标...您想要一个示例还是其他已知方式?
  • 1) 您正在尝试将 二维 数组转换为 一维 数组。 2) 请说明您正在尝试通过键总结这些值;不要让我们猜到。
  • 所以,结论是没有任何内置函数......我用自定义函数解决了这个问题......谢谢你的帮助......也谢谢你的负面观点。 ..

标签: php arrays process


【解决方案1】:

没有内置函数,但它是一个简单的 foreach 循环。假设您的数组存储在变量 $arr;

$return = array();
foreach ($arr as $a) {
    $return[$a[0]] += $a[1];
}
echo "<pre>"; print_r($return);

如果您多次调用,那么您可以轻松编写自己的函数

$arr[0]= array(17,111);
$arr[1]= array(17,10);
$arr[2]= array(20,111);

$return = subArr($arr);
echo "<pre>"; print_r($return);

function subArr($arr) {
    $result = array();
    foreach ($arr as $a) {
        $result[$a[0]] += $a[1];
    }
    return $result;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2019-06-29
    • 2012-06-10
    • 1970-01-01
    相关资源
    最近更新 更多