切片在其元件中的一个多维PHP数组 [英] Slicing a multi-dimensional PHP array across one of its elements

查看:138
本文介绍了切片在其元件中的一个多维PHP数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

说,例如,你只是一个查询数据库,你收到这个二维数组。

  $结果=阵列(
    阵列('ID'=大于1,'名'=>'红','旋转'=> 1)
    阵列('ID'=大于2,'名'=>'绿色','旋转'= -1个)
    阵列('ID'= GT; 3,'名'=>'蓝','旋转'= GT; .5)
);

我经常发现自己写的循环是这样的。

 的foreach($结果$结果)
    $名称[] = $结果[名称];

我的问题是确实存在一种方式来获得这个数组$名称,而不使用循环?使用回调函数算作使用循环。

下面是让每一个领域更宽泛的例子。

 的foreach($结果$结果)
    的foreach($结果为$关键=> $值)
        $域[$关键] [] = $价值;


解决方案

截至6月20日在PHP-5.5有一个新的功能, array_column

例如:

  $记录=阵列(
    阵列(
        'ID'=> 2135,
        'FIRST_NAME'=> 约翰,
        '姓氏'=> 母鹿
    )
    阵列(
        'ID'=> 3245,
        'FIRST_NAME'=> 莎莉,
        '姓氏'=> 史密斯
    )
    阵列(
        'ID'=> 5342,
        'FIRST_NAME'=> 简,
        '姓氏'=> 琼斯
    )
    阵列(
        'ID'=> 5623,
        'FIRST_NAME'=> 彼得,
        '姓氏'=> 母鹿
    )
);
$ firstNames = array_column($记录,'FIRST_NAME');
的print_r($ firstNames);

将返回

 阵列

    [0] =>约翰
    [1] =>出击
    [2] =>简
    [3] =>彼得

有在上述链路甚至更多的例子。

Say for example you just queried a database and you recieved this 2D array.

$results = array(
    array('id' => 1, 'name' => 'red'  , 'spin' =>  1),
    array('id' => 2, 'name' => 'green', 'spin' => -1),
    array('id' => 3, 'name' => 'blue' , 'spin' => .5)
);

I often find myself writing loops like this.

foreach($results as $result)
    $names[] = $result['name'];

My questions is does there exist a way to get this array $names without using a loop? Using callback functions count as using a loop.

Here is a more generic example of getting every field.

foreach($results as $result)
    foreach($result as $key => $value)
        $fields[$key][] = $value;

解决方案

As of June 20th in PHP-5.5 there is a new function array_column

For example:

$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe'
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith'
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones'
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe'
    )
);


$firstNames = array_column($records, 'first_name');
print_r($firstNames);

Will return

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

There are even more examples in the above mentioned link.

这篇关于切片在其元件中的一个多维PHP数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆