标签: array-reduce

在PHP中,是否有一个函数返回一个由关联数组数组中的键值组成的数组?

我确定之前已经问过这个问题,我很抱歉没先找到它.

原始数组:

[0] => Array
    (
        [categoryId] => 1
        [eventId] => 2
        [eventName] => 3
        [vendorName] => 4
    )

[1] => Array
    (
        [categoryId] => 5
        [eventId] => 6
        [eventName] => 7
        [vendorName] => 8
    )

[2] => Array
    (
        [categoryId] => 9
        [eventId] => 10
        [eventName] => 11
        [vendorName] => 12
    )
Run Code Online (Sandbox Code Playgroud)

我希望得到的结果是:print_r(get_values_from_a_key_in_arrays('categoryId',$ array));

[0] => 1
[1] => 5
[2] => 9
Run Code Online (Sandbox Code Playgroud)

我只是在寻找比编写自己的基于foreach的功能更清晰的东西.如果foreach是答案,我已经有了.

编辑:我不想使用硬编码密钥,我只是展示了一个示例调用解决方案.谢谢!^ _ ^

PHP 5.3快速抓取解决方案:

private function pluck($key, $data) {
    return array_reduce($data, function($result, $array) …
Run Code Online (Sandbox Code Playgroud)

php arrays associative-array array-reduce pluck

25
推荐指数
4
解决办法
1万
查看次数

有没有办法打破Swift中数组的reduce函数?

有没有办法做类似的东西break从一个for循环,但在阵列的reduce()功能?

例如,考虑我有一个数组:

var flags = [false, false, true, false, false, true, false]
Run Code Online (Sandbox Code Playgroud)

......我需要累积||起来.使用for循环,可以执行以下操作:

var resultByFor = false

for flag in flags {
    if flag {
        resultByFor = true
        break
    }
}
Run Code Online (Sandbox Code Playgroud)

...即在我们获得第一个时刻,true没有必要完成循环,因为结果true无论如何.

使用reduce(),以下看起来非常整洁:

var resultByReduce = flags.reduce(false) { $0 || $1 }
Run Code Online (Sandbox Code Playgroud)

但是,对于示例中给出的数组,for循环体仅执行3次,而reduce()函数闭包将被触发完整7次.

有没有办法reduce()在第3次迭代中拯救(就像它可以在for循环中完成)?

[UPD]

我过分简化了这个问题.原来的问题更像这样:

extension Int {
    func isWholeMultiplesOf(base: Int) -> Bool {
        return …
Run Code Online (Sandbox Code Playgroud)

arrays break array-reduce swift

16
推荐指数
1
解决办法
3316
查看次数

如何使用PHP将多维数组转换为单个数组?

实现数据库查询后,我将获得下面的多维数组.

二维数组

Array
(
    [0] => Array
        (
            [t1] => test1
        )

    [1] => Array
        (
            [t2] => test2
        )

    [2] => Array
        (
            [t3] => test3
        )

    [3] => Array
        (
            [t4] => test4
        )

    [4] => Array
        (
            [t5] => test5
        )

)
Run Code Online (Sandbox Code Playgroud)

但我想将其转换为单维数组,如下面的格式.

一维数组

Array (
    t1 => test1
    t2 => test2
    t3 => test3
    t4 => test4
    t5 => test5
)
Run Code Online (Sandbox Code Playgroud)

请帮我这样做

php arrays multidimensional-array array-reduce

13
推荐指数
3
解决办法
4681
查看次数

如何在PHP中退出数组迭代函数(array_reduce)

我有一个array_reduce函数,我愿意在满足特定条件时退出.

$result = array_reduce($input, function($carrier, $item) {
  // do the $carrier stuff
  if (/* god was one of us */) {
    break; //some break analogue
  }
  return $carrier;
});
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一目标?或者我应该使用foreach代替?

php arrays loops array-reduce

5
推荐指数
1
解决办法
1414
查看次数

O'reilly犯了错误:array_reduce

我正在从O'reilly的媒体书"编程PHP"中学习PHP,我偶然发现了这个:

function add_up ($running_total, $current_value) {
    $running_total += $current_value * $current_value;
    return $running_total;
}
$numbers = array(2, 3, 5, 7);
$total = array_reduce($numbers, 'add_up');
echo $total;
Run Code Online (Sandbox Code Playgroud)

array_reduce()行进行以下函数调用:

add_up(2,3)
add_up(11,5)
add_up(36,7)
// $total is now 87
Run Code Online (Sandbox Code Playgroud)

但是当我计算得到85.我认为应该这样写:

array_reduce( )行使这些函数调用:

add_up (0,2);
add_up (4,3);
add_up (13,5);
add_up (38,7);
Run Code Online (Sandbox Code Playgroud)

因为默认情况下可选值$ initial设置为NULL.

mixed array_reduce ( array $input , callable $function [, mixed $initial = NULL ] )
Run Code Online (Sandbox Code Playgroud)

有更多知识的人可以向我解释,谁错了,为什么?

php array-reduce

4
推荐指数
1
解决办法
233
查看次数

将PHP中的数组索引与array_reduce相乘

为什么array_reduce()添加和乘法时该方法的工作方式不同?当我在下面添加数组值时,代码会产生预期的结果:15.但是当我乘以时,它返回:0.相同的代码......唯一的区别是+标志是为*标志切换的.

  function sum($arr){
        print_r(array_reduce($arr, function($a, $b){return $a + $b;}));
    }

    function multiply($arr){
        print_r(array_reduce($arr, function($a, $b){return $a * $b;}));
    }

    sum(array(1, 2, 3, 4, 5)); // 15
    multiply(array(1, 2, 3, 4, 5)); // 0
Run Code Online (Sandbox Code Playgroud)

php array-reduce

4
推荐指数
1
解决办法
526
查看次数

如何检查多维数组中的所有值是否为空

我有一个将多维数组发布到我的PHP脚本的表单,我需要知道数组中的所有值是否为空。

这是我的数组:

$array[] = array('a'=>'',
                 'b'=>array('x'=>''),
                 'c'=>array('y'=>array('1'=>'')),
                 'd'=>'');
Run Code Online (Sandbox Code Playgroud)

我尝试使用array_reduce(),但它只是返回一个数组:

echo array_reduce($array, "em");

function em($a,$b){
    return $a.$b;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

php arrays multidimensional-array array-reduce

3
推荐指数
1
解决办法
3130
查看次数

如何在回调函数中包含变量?

我正在尝试获得大于的数组值n.

array_reduce()这样使用:

$arr = range(1,10);
echo array_reduce($arr, function ($a, $b) { return ($b > 5) ? ++$a : $a; });
Run Code Online (Sandbox Code Playgroud)

这打印出数组中元素的数量大于硬编码的元素5.

但是我怎么能做5变量$n呢?

我试过引入第三个这样的参数:

array_reduce($arr, function ($a, $b, $n) { return ($b > $n) ? ++$a : $a; });
//                                    ^                  ^
Run Code Online (Sandbox Code Playgroud)

乃至

array_reduce($arr, function ($a, $b, $n) { return ($b > $n) ? ++$a : $a; }, $n);
//                                    ^                  ^                   ^
Run Code Online (Sandbox Code Playgroud)

这些都不起作用.你能告诉我如何在这里包含一个变量吗?

php scope callback count array-reduce

3
推荐指数
1
解决办法
2553
查看次数

使用array.reduce()获取对象数组中对象出现次数的JavaScript代码

var developers = [
    { name: "Joe", age: 23 ,overallLevel: "high"},
    { name: "Sue", age: 28 ,overallLevel: "advanced" },
    { name: "Jon", age: 32 ,overallLevel: "high" },
    { name: "Bob", age: 24 ,overallLevel: "high" },
    { name: "Bob", age: 20 ,overallLevel: "advanced" }
]
Run Code Online (Sandbox Code Playgroud)

使用array.reduce()需要在提到的数组中计算overallLevel [high:3,advanced:2]

javascript array-reduce

2
推荐指数
1
解决办法
466
查看次数

减少数组以更改内容

我如何使用array.reduce来改变数组内容的方式.我不想对内容做任何数学.

Orinal数组:

var myArray = [
    {id:1, name:'name01', value:11},
    {id:2, name:'name02', value:22},
    {id:3, name:'name03', value:33},
    {id:4, name:'name04', value:44},
    {id:5, name:'name05', value:55}
]
Run Code Online (Sandbox Code Playgroud)

我希望它改为:

[
    {1:{id:1, name:'name01', value:11}},
    {2:{id:2, name:'name02', value:22}},
    {3:{id:3, name:'name03', value:33}},
    {4:{id:4, name:'name04', value:44}},
    {5:{id:5, name:'name05', value:55}}
]
Run Code Online (Sandbox Code Playgroud)

因此,id在弹出的object是一个keyvalue它的整个object.

这可以通过array.reduce不使用任何for loopgroupBy

javascript arrays ecmascript-6 array-reduce

0
推荐指数
1
解决办法
58
查看次数