【问题标题】:PHP: Multidimensional array losing keysPHP:多维数组丢失键
【发布时间】:2016-02-17 14:40:17
【问题描述】:

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

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

$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['one'] array('x41', 'x42', 'x43', 'x44', 'x45', 'x46', 'x47', 'x48')。在您的keep 声明中将一个替换为另一个。不知道你期望什么样的键......?!
  • 请你提供一个期望结果的例子吗?
  • @deceze 是的,我有一个特别愚蠢的时刻,并且由于某种原因,尽管没有在所述数组中明确声明键,但由于某种原因,当我将它们推入父数组时,我期望数组键被保留。这就是我尝试编写代码解决头痛的结果。

标签: php arrays multidimensional-array associative-array


【解决方案1】:

您必须明确指定键:

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

【讨论】:

  • 呸,我自己也慢慢意识到了这一点——我想,出于某种原因,我希望保留密钥,尽管我显然没有通过将它们推入容器来声明它们数组。显然,问题的核心在于椅子和键盘之间。
猜你喜欢
  • 2011-09-20
  • 2021-11-28
  • 1970-01-01
  • 2013-09-21
  • 2020-06-13
  • 2013-11-27
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多