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

时间:2013-11-12 21:14:42

标签: php

以下是我的一些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 ..但它似乎没有工作..有谁知道为什么?

2 个答案:

答案 0 :(得分:3)

通过数字索引,值'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']11不是数组。

答案 1 :(得分:1)

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

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

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