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)
,我会按预期获得所有键,除了 keep
、dump
或 all
键,它们恢复为数字索引.
我确信我今天过得特别愚蠢,但同样值得注意的是,我使用对象进行了快速测试,结果相同。我做错了什么?
您必须明确指定密钥:
$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 = 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)
,我会按预期获得所有键,除了 keep
、dump
或 all
键,它们恢复为数字索引.
我确信我今天过得特别愚蠢,但同样值得注意的是,我使用对象进行了快速测试,结果相同。我做错了什么?
您必须明确指定密钥:
$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']);