php5.5新数组函数array_column应用实例分享

来源:互联网 发布:热分析软件有哪些 编辑:程序博客网 时间:2024/06/03 17:49

最新的PHP5.5增加了一个新的数组函数array_column,挺好用的。

不过对于低版本PHP,就得自己实现了。

参考地址:https://wiki.php.net/rfc/array_column

具体代码如下:

if(!function_exists('array_column')){     function array_column($input, $columnKey, $indexKey=null){         $columnKeyIsNumber      = (is_numeric($columnKey)) ? true : false;         $indexKeyIsNull         = (is_null($indexKey)) ? true : false;         $indexKeyIsNumber       = (is_numeric($indexKey)) ? true : false;         $result                 = array();         foreach((array)$input as $key=>$row){             if($columnKeyIsNumber){                 $tmp            = array_slice($row, $columnKey, 1);                 $tmp            = (is_array($tmp) && !empty($tmp)) ? current($tmp) : null;             }else{                 $tmp            = isset($row[$columnKey]) ? $row[$columnKey] : null;             }             if(!$indexKeyIsNull){                 if($indexKeyIsNumber){                     $key        = array_slice($row, $indexKey, 1);                     $key        = (is_array($key) && !empty($key)) ? current($key) : null;                     $key        = is_null($key) ? 0 : $key;                 }else{                     $key        = isset($row[$indexKey]) ? $row[$indexKey] : 0;                 }             }             $result[$key]       = $tmp;         }         return $result;     } } //edit by www.jbxue.com// 使用例子 $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); /* Array (     [0] => John     [1] => Sally     [2] => Jane     [3] => Peter ) */$records = array(     array(1, 'John', 'Doe'),     array(2, 'Sally', 'Smith'),     array(3, 'Jane', 'Jones') ); $lastNames = array_column($records, 2); print_r($lastNames); /* Array (     [0] => Doe     [1] => Smith     [2] => Jones ) */$mismatchedColumns = array(     array(         'a' => 'foo',         'b' => 'bar',         'e' => 'baz'    ),     array(         'a' => 'qux',         'c' => 'quux',         'd' => 'corge'    ),     array(         'a' => 'grault',         'b' => 'garply',         'e' => 'waldo'    ), ); $foo = array_column($mismatchedColumns, 'a', 'b'); print_r($foo); /* Array (     [bar] => foo     [0] => qux     [garply] => grault ) */

array_column 用于获取二维数组中的元素(PHP 5 >= 5.5.0) 
<?php// Array representing a possible record set returned from a database// Edit by www.jbxue.com$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',    ));$first_names = array_column($records, 'first_name');print_r($first_names);?>Array(    [0] => John    [1] => Sally    [2] => Jane    [3] => Peter)<?php// Using the $records array from Example #1$last_names = array_column($records, 'last_name', 'id');print_r($last_names);?>Array(    [2135] => Doe    [3245] => Smith    [5342] => Jones    [5623] => Doe)