我有这个:
Array (
[0] => Array ( [f_count] => 1 [uid] => 105 )
[1] => Array ( [f_count] => 0 [uid] => 106 )
[2] => Array ( [f_count] => 2 [uid] => 107 )
[3] => Array ( [f_count] => 0 [uid] => 108 )
[4] => Array ( [f_count] => 1 [uid] => 109 )
[5] => Array ( [f_count] => 0 [uid] => 110 )
[6] => Array ( [f_count] => 3 [uid] => 111 )
)
我需要的是:7
“,这是f_count
列的总和。
我已经尝试了几个小时了。我以为array_sum()
可以,但是不适用于多维数组。因此,我试图弄清楚如何f_count
通过unset()
或剪接或其他方式隔离s
,但是每种解决方案似乎都涉及一个foreach
循环。我弄乱了array_map
,array_walk
和其他人,但无济于事。我还没有找到一个可以很好地处理多维数组的函数。
我正在运行PHP 5.4。
有人可以告诉我如何在没有foreach
循环的情况下求和该列吗?
如果有帮助,则f_count
值将永远不会大于100
,并且uid
值将始终大于100
。
另外,如果有一种方法可以不同地运行我的查询,使得数组不是多维的,那显然也可以。
$query = "SELECT f_count, uid FROM users WHERE gid=:gid";
...
$array = $stmt->fetchAll();
我正在使用PDO。
您需要将其与之耦合以array_map()
首先选择该f_count
列:
array_sum(array_map(function($item) {
return $item['f_count'];
}, $arr));
当然,在内部,这会执行一个双循环。只是您在代码中看不到它。您可以array_reduce()
用来摆脱一个循环:
array_reduce($arr, function(&$res, $item) {
return $res + $item['f_count'];
}, 0);
但是,如果速度是唯一的利益,那么速度foreach
仍然最快:
$sum = 0;
foreach ($arr as $item) {
$sum += $item['f_count'];
}
这要归功于您使用的变量的“局部性”,即,没有用于计算最终总和的函数调用。
并分别处理这两个数组。这是更好的解决方案吗?
例如,我有一个这样的数组 但输出只有11、12、13、14、15。我想打印所有的值。有人能帮我修改一下吗?提前谢谢
问题内容: 我有一个这样的多维数组: 我想这样的html输出: - 活动1 艺术家1 艺术家1 desc http : //www.artist1.com,http://www.artist1-2.com ARTIST 8 artist 8 desc http://www.artist8.com ARTIST 5 artist 5 desc http://www.artist5.com - 活动2
我试图弄清楚嵌套for循环是如何与JavaScipt中的多维数组一起工作的,但有一点让我有些困惑。以股票为例 这就是我所期望的结果123456。但是,如果我将数字添加到外部数组的末尾: 我仍然得到同样的输出1 2 3 4 5 6?我不明白为什么 输出是一个bcdyz,这是我所期望的。为什么字符串的行为会有所不同?
问题内容: 假设我有以下多维数组(从MySQL或服务检索): 我们可以在一个“ 内置 ” php函数调用中获得一组s 吗?或一行代码? 我知道传统的循环并获得价值,但是我不需要这个: 也许有些和可以做的魔力。 问题答案: 从php 5.5开始,您可以使用: 这是任何现代项目的首选选项。但是,如果必须支持php <5.5,则存在以下替代方法: 从php 5.3开始,您可以使用匿名函数,如下所示: 在
所以我想看看有没有办法循环这些数组,看看哪一个与main函数中提供的{6,1,1,6,3,1,4,7,7,1}的数组匹配。