PHP:多维数组丢失密钥

PHP:多维数组丢失密钥,php,arrays,multidimensional-array,associative-array,Php,Arrays,Multidimensional Array,Associative Array,我觉得我错过了一些非常明显的东西,但是: 我有一个预定义数组的多维数组,其思想是有命名子数组的命名子数组: $masterArray = array(); $masterArray['one'] = array('x41', 'x42', 'x43', 'x44', 'x45', 'x46', 'x47', 'x48'); $masterArray['two'] = array('xC0', 'xC1', 'xC2', 'xC3', 'xC4', 'xC5', 'xC6', 'xC7'); $

我觉得我错过了一些非常明显的东西,但是:

我有一个预定义数组的多维数组,其思想是有命名子数组的命名子数组:

$masterArray = array();

$masterArray['one'] = array('x41', 'x42', 'x43', 'x44', 'x45', 'x46', 'x47', 'x48');
$masterArray['two'] = array('xC0', 'xC1', 'xC2', 'xC3', 'xC4', 'xC5', 'xC6', 'xC7');
$masterArray['tre'] = array('x2E', 'x2C', 'x3A', 'x3B', 'xA1', 'x21', 'xBF', 'x3F');
$masterArray['for'] = array('x5E', 'x60', 'xAF', 'xA8', 'xB4', 'xB8', '02B', '02C');

$masterArray['keep'] = array($masterArray['one'], $masterArray['two']);
$masterArray['dump'] = array($masterArray['tre'], $masterArray['for']);

$masterArray['all'] = array($masterArray['keep'], $masterArray['dump']);
但是,如果我打印($masterArray['all']),它会输出多维数组,但所有键都没有了:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => x41
                    [1] => x42
                    [2] => x43
                    [3] => x44
                    [etc.]
如果我打印($masterArray),我会按预期获得所有键,除了
保留
转储
所有
键,这些键都会恢复为数字索引


我肯定我今天过得特别无聊,但也值得注意的是,我用对象做了一个快速测试,得到了同样的结果。我做错了什么?

您必须明确指定键:

$masterArray['keep'] = array('one'=>$masterArray['one'], 'two'=>$masterArray['two']);
$masterArray['dump'] = array('three'=>$masterArray['tre'], 'for'=>$masterArray['for']);

$masterArray['all'] = array('keep'=>$masterArray['keep'], 'dump'=>$masterArray['dump']);

$masterArray['one']
阵列('x41','x42','x43','x44','x45','x46','x47','x48')
。在
保留
声明中用另一个替换一个。不知道你希望那里有什么样的钥匙。。。?!请你提供一个期望结果的例子好吗?@deceze Yep,我有一个特别愚蠢的时刻,出于某种原因,我希望在将数组键推入父数组时保留它们,尽管没有在所述数组中显式声明键。这就是我在头痛的时候尝试编码得到的结果。嗯,我自己也慢慢意识到了这一点——我想出于某种原因,我希望保留这些密钥,尽管我显然不是通过将它们推入容器数组来声明它们。显然,问题的核心是在椅子和键盘之间。