数组多维,如果Array_component有重复的键


Array multidimensional if array_combine has duplicated key

目标

制作:

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

问题

我不懂逻辑。

场景

我的阵列是:

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

提前谢谢。

这是从array_component手动页面中的注释中获得的,似乎可以完成您需要的工作(尽管在我看来,函数名称的选择有点奇怪!):

<?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
        )
)