PHP数组unset()行为-保留最后一个数组键?
我有一个由几个字符串(HTTP地址)构成的数组,我在这些字符串上运行PHP过滤器和PHP数组unset()行为-保留最后一个数组键?,php,arrays,Php,Arrays,我有一个由几个字符串(HTTP地址)构成的数组,我在这些字符串上运行PHP过滤器和unset()方法来删除无效的URL。但是,最后一个数组项永远不会被删除——我不知道为什么,也不知道如何解决这个问题。我希望你们能帮忙 $url1 = "http://localhost/work/project/scrapes/1.html"; $url2 = ""; $url3 = ""; $urls = array($url1, $url2, $url3); for($x = 0; $x < siz
unset()
方法来删除无效的URL。但是,最后一个数组项永远不会被删除——我不知道为什么,也不知道如何解决这个问题。我希望你们能帮忙
$url1 = "http://localhost/work/project/scrapes/1.html";
$url2 = "";
$url3 = "";
$urls = array($url1, $url2, $url3);
for($x = 0; $x < sizeof($urls); $x++){
if(!filter_var($urls[$x], FILTER_VALIDATE_URL)){
unset($urls[$x]);
}
}
print_r() gives me this:
Array ( [0] => http://localhost/work/project/scrapes/1.html [2] => )
$url1=”http://localhost/work/project/scrapes/1.html";
$url2=“”;
$url3=“”;
$urls=数组($url1、$url2、$url3);
对于($x=0;$xhttp://localhost/work/project/scrapes/1.html [2] => )
我不知道为什么
$URL[2]
仍然存在,为什么它没有被删除。因为你动态计算大小()
,只要你删除元素,它就会减少。因此,解决方法是在循环之前获得大小:
$url1 = "http://localhost/work/project/scrapes/1.html";
$url2 = "";
$url3 = "";
$urls = array($url1, $url2, $url3);
$size = sizeof($urls); // <----
for($x = 0; $x < $size; $x++){
if(!filter_var($urls[$x], FILTER_VALIDATE_URL)){
unset($urls[$x]);
}
}
var_dump($urls);
$url1=”http://localhost/work/project/scrapes/1.html";
$url2=“”;
$url3=“”;
$urls=数组($url1、$url2、$url3);
$size=sizeof($url);// 这是因为在每次迭代中都要计算数组的大小
通过迭代:
sizeof($url)=3,$x=0,$x
sizeof($url)=2,$x=1,$x
sizeof($URL)=1,$x=2,$x
在开始循环之前保存数组的长度
$length = sizeof($urls);
for($x = 0; $x < $length; $x++){
}
$length=sizeof($url);
对于($x=0;$x<$length;$x++){
}
我没有意识到每次迭代都会重新计算大小。谢谢