PHP爆炸数组foreach

时间:2015-10-28 18:44:37

标签: php arrays foreach

我试图预测来自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做。

感谢您的回答并抱歉英语不好。

2 个答案:

答案 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模板,可能会让您遇到麻烦。