入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2016-03-16 投稿人: 浏览次数:4410

首先介绍这个函数:

  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
)
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。