如果string包含任何字符,则从数组中删除元素

时间:2013-11-17 19:53:39

标签: php arrays

如果字符串包含任何字符,则从数组中删除元素。例如,下面是实际的数组。

array(1390) {
  [0]=>
  string(9) "Rs.52.68""
  [1]=>
  string(20) ""php code generator""
  [2]=>
  string(9) ""Rs.1.29""
  [3]=>
  string(21) ""php codes for login""
  [4]=>
  string(10) ""Rs.70.23""

 } 

我需要数组删除所有以RS.

开头的元素

预期结果

 array(1390) {
      [0]=>
      string(20) ""php code generator""
      [1]=>
      string(21) ""php codes for login""


     } 

到目前为止我尝试了什么:

foreach($arr as $ll)
{

if (strpos($ll,'RS.') !== false) {
    echo 'unwanted element';
}

从上面的代码中我如何从数组中删除不需要的元素。

3 个答案:

答案 0 :(得分:4)

您可以在$key循环中获取foreach并在您的阵列上使用unset()

foreach ($arr as $key => $ll) {
    if (strpos($ll,'RS.') !== false) {
        unset($arr[$key]);
    }
}

请注意,由于“RS”永远不会出现,因此不会删除任何商品。只有“Rs”。

答案 1 :(得分:3)

这听起来像是array_filter的工作。它允许您指定可以执行任何您喜欢的测试的回调函数。如果回调返回true,则返回结果数组中的值。如果返回false,则过滤掉该值。

$arr = array_filter($arr, 
  function($item) { 
    return strpos($item, 'Rs.') === false; 
  });

答案 2 :(得分:0)

Rs与RS不同,您希望使用stripos而非strpos进行非区分大小写检查

foreach($arr as $key => $ll)
{    
  if (stripos($ll,'RS.') !== false) {
    unset($arr[$key]);
  }
}

或使用arrayfilter指出