如果array_combine具有重复键,则为多维数组

时间:2013-12-04 14:10:18

标签: php arrays multidimensional-array

目标

制作本:

Array
(
    [Title] => 'Hello!'
    [Layout] => 'Shared/_Master'
    [Section] => Array (
        [0] => Header
        [1] => Body
    )
)

问题

我错过了逻辑。

场景

我的阵列是:

$keys = ['Title', 'Layout', 'Section', 'Section'];
$values = ['Hello!', 'Shared/_Master', 'Header', 'Body'];

提前致谢。

1 个答案:

答案 0 :(得分:1)

这取自array_combine手册页中的评论,似乎可以完成您需要的工作(虽然我认为函数名称的选择有点奇怪!):

<?php

$keys = array('Title', 'Layout', 'Section', 'Section');
$values = array('Hello!', 'Shared/_Master', 'Header', 'Body');

function array_combine_($keys, $values)
{
    $result = array();
    foreach ($keys as $i => $k) {
        $result[$k][] = $values[$i];
    }
    array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;'));
    return    $result;
}

echo '<pre>';
print_r(array_combine_($keys, $values));
echo '</pre>';
?>

可生产

Array
(
    [Title] => Hello!
    [Layout] => Shared/_Master
    [Section] => Array
        (
            [0] => Header
            [1] => Body
        )

)