【问题标题】:PHP Assign Array Keys with New Array with Existing ArraysPHP 用新数组和现有数组分配数组键
【发布时间】:2014-12-14 23:49:35
【问题描述】:

为了省去为每个数组输入键名的麻烦,我希望能够构建类似...的列表。

$lists = array (
0 => array ('A', 'B', 'C', 'D', 'E');
1 => array ('A', 'B', 'C', 'D', 'E');
2 => array ('A', 'B', 'C', 'D', 'E');
)

.. 然后为所有它们分配相同的键名(之前或之后)..

Key1, Key2, Key3, Key4, Key5

.. 所以当他们被调用时,我可以做类似的事情..

foreach($lists as $list) {
    showList($list);
} 

.. 然后在 showList() 函数中,我可以通过键名调用这 5 个键。

我设置的功能没有问题,但它分配的键名我不知道该怎么做。对不起,如果我的术语不准确,但希望我解释得足够好。

【问题讨论】:

  • 您在寻找array_combine吗?

标签: php arrays key


【解决方案1】:

array_combine 将从一个键数组和一个值数组创建一个关联数组。

$keys = array('Key1', 'Key2', 'Key3', 'Key4', 'Key5');
foreach ($lists as $list) {
    showList(array_combine($keys, $list));
}

如果你想永久修改$lists,你可以这样做:

foreach ($lists as &$list) {
    $list = array_combine($keys, $list);
}

引用变量&$list 使其替换原地元素。

【讨论】:

  • 您需要循环组合子数组。
  • @Barmar - 我以前看过那个代码,但是当我把它放进去时,我得到了以下错误.. 警告:array_combine() [function.array-combine]:两个参数应该有相同数量的元素
  • 它们确实有相同数量的元素。 $keys 有 5 个键,array ('A', 'B', 'C', 'D', 'E') 有 5 个值。
  • @Barmar - 在 $lists 中它确实上升到 29 .. 这是我能想到的唯一不匹配的东西,但我认为它会在每个中看到 5 个键对应 5 个值$lists 中的 29 个数组。
【解决方案2】:

试试这个:

<?php
$keys = array('Key1', 'Key2', 'Key3', 'Key4', 'Key5');
$lists = array (
                    array ('A', 'B', 'C', 'D', 'E'),
                    array ('A', 'B', 'C', 'D', 'E'),
                    array ('A', 'B', 'C', 'D', 'E')
                );

function showList($list){
    global $keys;
    return array_combine($keys, $list);
}

$output = array_map("showList", $lists);

echo "<pre>";
print_r($output);
?>

结果:

Array
(
    [0] => Array
        (
            [Key1] => A
            [Key2] => B
            [Key3] => C
            [Key4] => D
            [Key5] => E
        )

    [1] => Array
        (
            [Key1] => A
            [Key2] => B
            [Key3] => C
            [Key4] => D
            [Key5] => E
        )

    [2] => Array
        (
            [Key1] => A
            [Key2] => B
            [Key3] => C
            [Key4] => D
            [Key5] => E
        )

)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多