PHP 多维数组提供三个级别的深度,而不是两个


php multi-dimensional array provides three levels of depth instead of two

当我执行下面的代码时:法典:

<?php
$data = array();
$jim = array('Jim'=>1);
$bob = array('Bob'=>1);
$data['abc'][] = $jim;
$data['abc'][] = $bob;
print_r($data);
?>

我收到以下输出:

    Array
(
    [abc] => Array
        (
            [0] => Array
                (
                    [Jim] => 1
                )
            [1] => Array
                (
                    [Bob] => 1
                )
        )
)

我期待的是以下输出:

   Array
(
    [abc] => Array
        (
            [Jim] => 1
            [Bob] => 1
        )
)

我怎样才能做到这一点? 换个问题,我怎样才能根据提供的键将其保留为单个子数组?

$data = array();
$jim = array('Jim'=>1);
$bob = array('Bob'=>1);
$data['abc'] = array_merge($jim, $bob);
print_r($data);

你正在创建数组 ( $data['abc'] (,其中包含数组 ( [] ( 的数组 ( $jim$bob (这和写作是一样的:

$data['abc'][0] = array('jim' => 1);
$data['abc'][1] = array('bob' => 1);

你想要的可能是:

$data['abc'] = array();
$data['abc'] = array_merge($data['abc'], $jim, $bob);

Jim 和 Bob 是你自己声明的数组索引,你必须先更改它们

<?php
$data = array();
$data['abc']["Jim"] =1;
$data['abc']["Bob"] = 2;
print_r($data);
?>

演示