【问题标题】:How do I compared 2 nested index lengths?如何比较 2 个嵌套索引长度?
【发布时间】:2023-03-25 14:13:01
【问题描述】:

第一次在这里发帖,我尝试按照提问指南进行操作,如果我遗漏了什么,请见谅。

我在 PHP 中得到了一个多维数组,它没有相同数量的结果。 Array[0] 包含 6,而 Array[1] 仅包含 4。这是一个示例:

Array
(
    [0] => Array
        (
            [0] => 122.7799987793
            [1] => 121.95999908447
            [2] => 121.90000152588
            [3] => 122.94000244141
            [4] => 122.18000030518
            [5] => 119.7200012207
        )

    [1] => Array
        (
            [0] => 37.705001831055
            [1] => 37.759998321533
            [2] => 37.889999389648
            [3] => 38.520000457764
        )

)

我设法使用以下代码对这两个多维数组求和:

$finalresult = array();

foreach($newarray[0] as $k => $v){
        $finalresult[$k] = array_sum(array_column($newarray, $k));  
}

所以我的结果是:

Array
(
    [0] => Array
        (
            [0] => 160.4850006104
            [1] => 159.719997406
            [2] => 159,7900009155
            [3] => 161,4600028992
            [4] => 122.18000030518
            [5] => 119.7200012207
        )

)

所以前 4 个值的 SUM 工作正常,但后两个值与模式不匹配。

我想要达到的目标: 在我的数据库中,我得到了每个数组的平均数量。所以基本上我希望 array_sum 做的是:

array[0] + array[0]
array[1] + array[1]
array[2] + array[2]
array[3] + array[3]
array[4] + AVERAGE_VAR
array[5] + AVERAGE_VAR

总结一下:我正在努力实现具有较少值的数组被我从 MySQL 数据库中提取的 average_variable_number 填充。

我尝试了一些东西,但我无法理解它。我一直在寻找几天没有任何运气或提示我必须研究。

希望有人可以向我展示实现上述目标的 foreach 函数应该是什么样子的示例。

提前一百万谢谢你!!!

【问题讨论】:

  • 那么 4 和 5 索引是 0,1,2,3 索引的平均值吗?或者只是解释更多
  • 这能回答你的问题吗? Best method for sum two arrays
  • @OMiShah 没有一个答案可以处理数组长度不同的情况。
  • @OMiShah 和 Jerson,感谢您的帮助! Barmar 做到了 :)

标签: php multidimensional-array


【解决方案1】:

如果总是只有2个数组,你可以循环到更长的长度,然后测试两个数组中是否存在元素,用默认值替换不存在的元素。

$len = max(count($newarray[0]), count($newarray[1]));
for ($i = 0; $i < len; $i++) {
    $val1 = array_key_exists($i, $newarray[0]) ? $newarray[0][$i] : $default;
    $val2 = array_key_exists($i, $newarray[1]) ? $newarray[1][$i] : $default;
    $finalresult[$i] = $val1 + $val2;
}

【讨论】:

  • 我不能投票,因为我的声望不是 15 分,哈哈。但这确实成功了@Barmar,我确实必须对其进行调试,您提到的第 2 行:$i 应该是 $i ,但工作很棒!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多