0

我有一个奇怪的问题,我似乎一辈子都无法解决。

我正在从 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

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

我在这里感到困惑,如果有什么我遗漏的东西,或者关于为什么会这样的任何想法,请告诉我。

谢谢!

4

1 回答 1

0

我发现了我的问题,并且无法从我发布的内容中确定。

我测试过

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

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

字符串需要调整为“1,2”或者explode需要调整为“,”。无论哪种方式都可以解决问题。

于 2013-07-09T22:03:07.280 回答