2009-07-04 33 views
2

我有一个多维阵列看起来像这样:更改嵌套(多维)阵列转换成密钥=>值对在PHP

 
Array 
(
    [0] => Array 
     (
      [ClientID] => ec2173de2134fdsfg4fsdffcb4b5205 
      [Name] => ABC Widgets 
     ) 

    [1] => Array 
     (
      [ClientID] => e5dfgfdg2d760f640aadfgdfgdfg47b 
      [Name] => Acme Co 
     ) 

    [2] => Array 
     (
      [ClientID] => b9dfgsdfg419085c3sdgffdsgfdg313 
      [Name] => 4321 Corp 
     ) 

) 

我想改变为以下:

 
Array 
(
    ec2173de2134fdsfg4fsdffcb4b5205 => ABC Widgets 
    e5dfgfdg2d760f640aadfgdfgdfg47b => Acme Co 
    b9dfgsdfg419085c3sdgffdsgfdg313 => 4321 Corp 
) 

这样做的最佳方式是什么?另外,我会更好地存储阵列的原始格式,并根据需要转换为其他格式?谢谢你的帮助

回答

5
$flat = array(); 
foreach($multidim as $item) 
    $flat[$item['ClientID']] = $item['Name']; 

无论你是最好的存储原始形式不能一般回答。如果你需要它,你应该存储它。

+0

谢谢你的清晰,简洁的答案。 – rickvug 2009-07-04 06:22:35

0

它看起来像您正在创建与原始数据的哈希表。 哈希表是用于访问和插入单个数据元素非常快。但是,您无法针对记录中包含的数据运行查询 - 您只能根据唯一密钥进行检索,或者根据生成的密钥进行插入。

你可能会使用其所有字段的原始格式为“后端”,并产生一个哈希表像你展示了一个。退步是每次生成这个表时,都会花费CPU周期。

如果抛出这个数据到数据库中,数据库引擎将负责创建常规数据表(如您的第一个),并根据需要为您所使用的特定查询哈希表(像你的第二个)。您也可以强制它基于某个数据库列创建哈希表。

+0

用例是我正在使用Campaign Monitor(电子邮件软件)API。散列是属于客户端的API密钥。 – rickvug 2009-07-04 06:21:04