在 PHP 中调用多维数组不起作用


calling a multi dimensional array in php not working

这是我的一些PHP:

$query = $db->prepare('SELECT * FROM villages WHERE owner = ? AND id = ?');
$array = array($_SESSION['id'], $_SESSION['viewing']);
$query->execute($array);
$r = $query->fetch();
$r['HQlevelPlusOne'] = $r['HQlevel'] + 1;
$logsNeeded = $headquartersRequired[$r['HQlevelPlusOne'][0]];

$logsNeeded似乎不起作用,这是$headquartersRequired数组:

$headquartersRequired = array(array(50,     40,     55,    30),
                              array(90,     80,     100,   80));

例如,我将如何称呼值"50"?假设在我当前的代码中,$r['HQlevelPlusOne']是1。所以$logsNeeded的值应该是 90。但它似乎不起作用..有谁知道为什么?

通过数字索引,值 '50' 位于嵌套数组的索引 0 处,该数组本身位于索引 0 处。所以要检索它:

echo $headquartersRequired[0][0];

$headquartersRequired[0]指向数组 $headquartersRequired 的第一个索引。该值本身是一个数组,其元素可以以相同的方式访问,因此从那里$headquartersRequired[0][0]指向 $headquartersRequired 中第一个数组的第一个元素。

如果$r['HQlevelPlusOne']1$headquartersRequired[$r['HQlevelPlusOne'][0]]错误,因为$r['HQlevelPlusOne'][0]会引用名为 $r['HQlevelPlusOne']数组中的第一个元素。但是$r['HQlevelPlusOne']1的,1不是一个数组。

$r是一个一维数组,但你在最后一行代码($r['HQlevelPlusOne'][0])中引用了第二维。这是行不通的。

值 50 位于第 0 维度的第 0 个索引处。

它将处于位置 $headquartersRequired[0][0] = 50。