不久前,自己在一个小项目,我要拿出每个元素的一维数组key的值,一维阵列的形成,突然想到php 有一种功能,实现.
$array = array ( array ( "id" => 12, "name" => "Karl" ), array ( "id" => 4, "name" => "Franz" ), array ( "id" => 9, "name" => "Helmut" ), array ( "id" => 10, "name" => "Kurt" ) );print_r(array_column($array, 'id'));
但出错了,网页上错误提示是 no function 没有这个函数,但手冊是有的,为什么呢?
打开手冊才知道是php 5.5新增的,而我的php版本号确实 php 5.3所以没有,怎样攻克了.于是我写了
以下两种算法
第一种算法例如以下所看到的:
$key = 'id';$array = array ( array ( "id" => 12, "name" => "Karl" ), array ( "id" => 4, "name" => "Franz" ), array ( "id" => 9, "name" => "Helmut" ), array ( "id" => 10, "name" => "Kurt" ) );$ar = array_map ( function ($element) use($key) { $newarray = array (); if (array_key_exists ( $key, $element )) { $newarray = $element [$key]; } return $newarray;}, $array );print_r ( $ar );
上面有个函数 function ($element) use ($key) 结构 请訪问
另外一种方法是:
function array_merge_on_key($key, $array1, $array2) { $arrays = array_slice(func_get_args(), 1); $r = array(); foreach($arrays as &$a) { if(array_key_exists($key, $a)) { $r[] = $a[$key]; continue; } } return $r; } // example: $array1 = array("id" => 12, "name" => "Karl"); $array2 = array("id" => 4, "name" => "Franz"); $array3 = array("id" => 9, "name" => "Helmut"); $array4 = array("id" => 10, "name" => "Kurt"); $result = array_merge_on_key("id", $array1, $array2, $array3, $array4); print_r($result);
但是我特别喜欢使用数组功能 array_map()这样的结构.
版权声明:本文博主原创文章,博客,未经同意不得转载。