PHP - 某些不接受变量的数组索引

时间:2013-07-09 20:50:57

标签: php arrays loops for-loop

我有一个奇怪的问题,我不能为我的生活似乎解决。

我从mysql查询生成一个数组($ tags),它看起来像这样:

Array(
    [1] => Safety Toe
    [2] => Waterproof
)

然后我在循环中生成另一个数组($ link):

Array(
    [1] => Array(
        [0] => 1
        [1] => 2
    )
    [2] => Array(
        [0] => 1
        [1] => 2
    )
)

另外,我有2个预定义变量,在这种情况下如下:

$max == 2;
$title_count == 3;

后来我有2个for循环,1个嵌套:

for($y=0;$y<$max;$y++){
    for($x=1;$x<=$title_count;$x++){
        if($x==1){
            echo "<tr><td>".$tags[$link[$x][$y]]."</td>";
        }elseif($x<$title_count){
            echo "<td>".$tags[$link[$x][$y]]."</td>";
        }else{
            echo "<td>".$tags[$link[$x][$y]]."</td></tr>";
        }
    }
}

这应该产生以下内容:

Safety Toe Safety Toe Safety Toe
Waterproof Waterproof Waterproof

问题在于我得到的结果:

Safety Toe Safety Toe Safety Toe 

这让我很好奇,所以我尝试手动输入$ tags [2]。这工作和生产:

Waterproof Waterproof Waterproof
Waterproof Waterproof Waterproof

但是,如果我手动将它们全部设置为$ tag [$ link [1] [1]]($ link [1] [1] == 2),我会得到一个空结果。如果我设置了一个变量,比如$ test = $ link [1] [1]; (回声为2),然后尝试$ tags [$ test],我什么都没得到。但是,如果我设置$ test = 2;并做$ tags [$ test]我得到防水。

我在这里感到很困惑,如果有什么我想念的,或者为什么会这样,那么请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

我弄清楚了我的问题,而且我发布的内容无法确定。

我测试了

$tags[intval($links[1][1])]

并且它工作。$ links数组是通过爆炸字符串(1,2)生成的。我在“,”而不是“,”,因此第二个条目的值是“2”而不是“2”,因此是intval。

需要将字符串调整为“1,2”,否则需要将爆炸调整为“,”。无论哪种方式都可以解决问题。