我正在尝试测试是否存在多个文件的URL在PHP与foreach循环。
由于某些原因,我只将最后一个URL附加到数组中,我不知道为什么。
输出结果应该是:
TEST.COM/sky.jpg exists.
TEST.COM/water.jpg doesnt exist
TEST.COM/trees.jpg exists.
但最后一个url只追加,即trees.jpg
。
这是我的代码,我不太擅长PHP。可能对foreach
函数有一点误解。
我哪里做错了?
$neg = 'doesnt exist';
$exists = 'exists.';
$file = $_POST['URL'];
$terms = array('sky.jpg','water.jpg','trees.jpg');
reset($terms);
$list = array();
foreach ($terms as &$i){
$fullurl = $file.$i;
$file_headers = @get_headers($fullurl);}
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
array_push($list,$fullurl." ".$neg);}
else {array_push($list,$fullurl." ".$exists);}
foreach ($list as &$x){echo $x;}
?>
错误在这一行:
$file_headers = @get_headers($fullurl);}
去掉后面的}
,放在这里:
else {array_push($list,$fullurl." ".$exists);}}
否则,array_push
总共只被调用一次,结果是得到trees.jpg
。
你可以把右花括号单独放在一行上,并纠正缩进,以提高代码的可读性。