我还在学习PHP,但我需要一种方法来跟踪两个相关值的列表,一个电影院及其邮政编码。在你进一步阅读之前,我必须强调我在技术上并不需要解决这个问题,因为我已经用更有效的方法替换了它。我真的只是想知道为什么没有工作,因为我在其他地方找不到任何相关内容。
$cinema_locations = array(
array("Odeon", "M4 2BS"),
array("Cineworld", "OL7 0PG"),
array("Vue", "M50 3AG"),
array("AMC", "M3 4EN")
);
for ($i=0; $i<count($cinema_locations); $i++) {
if ($cinema_locations[$i][0] == $_GET['cinema_name']) {
$postcode = $cinema_locations[$i][1];
return;
}
}
正如您可以从代码中看到的那样,我试图遍历主数组,以便我可以将每个子数组的第一个值与$_GET
变量进行比较。我已多次查看此代码,甚至展示了我的其他编码器朋友,我们都没有发现任何错误,语法或其他方面。然而,浏览器只显示白屏。如果有人能够对这个问题有所了解,我和我的朋友们会非常感激;并且谁知道,它可以帮助其他人解决同样的问题。
对于任何可能感到好奇的人,我用关联数组替换了2D数组:
$cinema_locations = array(
"Odeon" => "M4 2BS",
"Cineworld" => "OL7 0PG",
"Vue" => "M50 3AG",
"AMC" => "M3 4EN"
);
$postcode = $cinema_locations[$_GET['cinema_name']];
修改
谢谢rishi,做到了。我甚至从未认为return
会使结果无效。使用break
停止循环,页面的其余部分加载正常。
答案 0 :(得分:5)
您应该写break;
而不是return;
如果您符合条件,则需要break
你的for循环。并继续下面的代码。
return
会立即从其调用的位置返回值。
答案 1 :(得分:1)
对于无法更改数组结构的情况,此代码是更好的方法。
// same array as the original post
$cinema_locations = array(
array("Odeon", "M4 2BS"),
array("Cineworld", "OL7 0PG"),
array("Vue", "M50 3AG"),
array("AMC", "M3 4EN")
);
foreach ($cinema_locations as $c_loc) {
$postcode = ($_GET'cinema_name'] == $c_loc[0]) ? $c_loc[1] : null;
}
print $postcode;
当然,你不应该像这样直接使用$_GET
,但你可能已经知道了。