PHP: 多维数组丢失键

PHP: Multidimensional array losing keys

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

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

$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']);

但是,如果我这样做 print_r($masterArray['all']),它会输出多维数组,但所有的键都消失了:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => x41
                    [1] => x42
                    [2] => x43
                    [3] => x44
                    [etc.]

如果我这样做 print_r($masterArray),我会按预期获得所有键,除了 keepdumpall 键,它们恢复为数字索引.

我确信我今天过得特别愚蠢,但同样值得注意的是,我使用对象进行了快速测试,结果相同。我做错了什么?

您必须明确指定密钥:

$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']);