PHP arrayChangeKey() 函数--用指定元素指定字段作为(替换或新增)key

首先介绍这个函数:

  function arrayChangeKey($arr,$key)
    {/*{{{*/                                            
        $processedArr = array();
        if(is_array($arr) && !empty($arr)){
            foreach ($arr as $item)
            {
                $processedArr[$item[$key]] = $item;
            }
        }
        return $processedArr;   
    }

实例效果:

 $list = '[
    {
      "name": "fhl",
      "container_format": "bare",
      "disk_format": "raw",
      "checksum": null,
      "id": "4bd3a29b-30fd-4cd6-a4e7-c707a74b3634",
      "size": 53687091200
    },
    {
      "name": "kvm_centos6.5_x86_64",
      "container_format": "bare",
      "disk_format": "raw",
      "checksum": null,
      "id": "ee7640cf-e199-4a7e-aaf7-ae223f458d9a",
      "size": 53687091200
    },
    {
      "name": "KVM centos 6.6 init 0.1",
      "container_format": "bare",
      "disk_format": "raw",
      "checksum": null,
      "id": "76573b95-7b68-402f-94ed-149ea1e2d5b5",
      "size": 53687091200
    }
  ]';

  $list = json_decode($list, true);

  print_r(arrayChangeKey($list, 'id'));

返回结果:

 [4bd3a29b-30fd-4cd6-a4e7-c707a74b3634] => Array
        (
            [name] => fhl
            [container_format] => bare
            [disk_format] => raw
            [checksum] => 
            [id] => 4bd3a29b-30fd-4cd6-a4e7-c707a74b3634
            [size] => 53687091200
        )

    [ee7640cf-e199-4a7e-aaf7-ae223f458d9a] => Array
        (
            [name] => kvm_centos6.5_x86_64
            [container_format] => bare
            [disk_format] => raw
            [checksum] => 
            [id] => ee7640cf-e199-4a7e-aaf7-ae223f458d9a
            [size] => 53687091200
        )

    [76573b95-7b68-402f-94ed-149ea1e2d5b5] => Array
        (
            [name] => KVM centos 6.6 init 0.1
            [container_format] => bare
            [disk_format] => raw
            [checksum] => 
            [id] => 76573b95-7b68-402f-94ed-149ea1e2d5b5
            [size] => 53687091200
        )
 }

有什么用处呢?
比如这样一个数据:

$item = '
 {
      "image": {
        "id": "4bd3a29b-30fd-4cd6-a4e7-c707a74b3634"
      },
      "id": "6b0f"
 }
 ';

我要将上面的item中的image的内容补充完整,根据id选择上面的数据,就直接可以避免foreach操作,。

$item = json_decode($item, true);
$item['image'] = $list[$item['image']['list']];

结果:

Array
(
    [image] => Array
        (
            [name] => fhl
            [container_format] => bare
            [disk_format] => raw
            [checksum] => 
            [id] => 4bd3a29b-30fd-4cd6-a4e7-c707a74b3634
            [size] => 53687091200
        )

    [id] => 6b0f
)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值