我试图预测来自explode()的数组
我有这个:
$links = " http://hi.co.il<br>
ht tp://hi.co.il<br>
http://hi.co.il<br>
http://hi.co.il<br>
http://hi.co.il<br>
http://mega.co.il<br>
http://hi.co.il";
$links = explode('<br>',trim($links));
//$links = preg_replace('/\s+/', '', $links);
$currenturl = "http://mega.co.il";
//if(($key = array_search($currenturl, $links)) !== false) {
// unset($links[$key]);
//}
foreach($links as $key => $value):
if($value == $currenturl):
unset($links[$key]);
endif;
endforeach;
print_r($links);
在foreach之前打印的$链接:
Array ( [0] => http://hi.co.il [1] => ht tp://hi.co.il [2] => http://hi.co.il [3] => http://hi.co.il [4] => http://hi.co.il [5] => http://mega.co.il [6] => http://hi.co.il )
在foreach之后打印的$链接:
http://hi.co.il ht tp://hi.co.il http://hi.co.il http://hi.co.il http://hi.co.il http://mega.co.il http://hi.co.il
为什么foreach从数组中取出回字符串? 我想检查foreach是否它的当前url然后从数组中取消设置,我是新手,我可以使它与array_search一起工作,但我想用foreach做。
感谢您的回答并抱歉英语不好。
答案 0 :(得分:1)
试试这个:
RDD[String]
$links = array_filter(
$links,function($element) {
return $element !== 'http://mega.co.il';
});
将删除array_filter
的返回值为function
的所有元素。对于所有元素,返回值将为false
,但匹配的值除外。
miken32对您的true
和:
内容是正确的。通常,只有当您的PHP代码轻易地放在大多数HTML文件中时才会使用它。对于纯PHP代码,大多数人使用花括号endif
和{
以及缩进。
考虑到JonathanKuhn的评论,你也可以尝试这种轻微的变化:
}
这也会为您提供所需的过滤效果,但不会删除所有换行符。要删除换行符,您可以这样做:
$links = array_filter(
$links,function($element) {
return strpos($element,'http://mega.co.il') !== true;
});
答案 1 :(得分:0)
这很好用,没有什么能把数组变成一个字符串。之后你应该修剪你的字符串,以便你的匹配工作。
<?php
$links = "http://hi.co.il<br>
http://hi.co.il<br>
http://hi.co.il<br>
http://hi.co.il<br>
http://hi.co.il<br>
http://mega.co.il<br>
http://hi.co.il";
$links = explode('<br>',trim($links));
print_r($links);
$currenturl = "http://mega.co.il";
foreach($links as $key => $value) {
if(trim($value) == $currenturl) {
unset($links[$key]);
}
}
print_r($links);
?>
我建议不要将alternate syntax用于代码块,这些代码块通常用于HTML模板,可能会让您遇到麻烦。