我有一个奇怪的问题,我不能为我的生活似乎解决。
我从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]我得到防水。
我在这里感到很困惑,如果有什么我想念的,或者为什么会这样,那么请告诉我。
谢谢!
答案 0 :(得分:0)
我弄清楚了我的问题,而且我发布的内容无法确定。
我测试了
$tags[intval($links[1][1])]
并且它工作。$ links数组是通过爆炸字符串(1,2)生成的。我在“,”而不是“,”,因此第二个条目的值是“2”而不是“2”,因此是intval。
需要将字符串调整为“1,2”,否则需要将爆炸调整为“,”。无论哪种方式都可以解决问题。