为什么解析 array_column不可用,

       不久前,自己在一个小项目,我要拿出每个元素的一维数组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()这样的结构.

版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值