将嵌套(多维)数组更改为key => PHP中的值对

时间:2009-07-04 05:56:01

标签: php arrays

我有一个多维数组,如下所示:

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
)

最好的方法是什么?另外,我最好以原始格式存储阵列并根据需要转换为其他格式吗?感谢您的帮助

2 个答案:

答案 0 :(得分:5)

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

一般情况下,您是否最好不要存储原始表格。如果需要,你应该存储它。

答案 1 :(得分:0)

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

您可以将原始格式及其所有字段用作“后端”,并生成与您演示的哈希表类似的哈希表。缺点是,每次生成此表时,都会花费CPU周期。

如果将此数据放入数据库,数据库引擎将根据您正在使用的特定查询的需要处理创建常规数据表(如第一个)和哈希表(如第二个)。您还可以强制它根据特定的数据库列创建哈希表。