从字符串中删除项目

时间:2013-09-26 09:32:26

标签: php

我有以下数组名为$ submissions:

Array ( [0] => 342 [1] => 343 [2] => 344 [3] => 345 )

然后我有一个字符串:

$in_both = 342,344;

然后我使用此代码从$ submissions中删除$ in_both中的任何数字:

if(($key = array_search($in_both, $submissions)) !== false) {
    unset($submissions[$key]);
}

问题是这只适用于第一个号码。

如何从数组中删除变量$ in_both中的所有数字?

谢谢

4 个答案:

答案 0 :(得分:2)

由于in_both是一个字符串,您需要将其转换为数组:

$in_both_arr = explode(",",$in_both);

然后你可以比较数组:

$submissions = array_diff($submissions,$in_both_arr);

请参阅documentation

答案 1 :(得分:1)

试试这个:

$submissions = Array( 342, 343, 344, 345 );

$in_both = '342,344';

$needles = explode(',', $in_both);
foreach ($needles as $needle) {
    while (($key = array_search($needle, $submissions)) !== false) {
        unset($submissions[$key]);
    }
}

foreach内部的while保证将删除数组中每个数字的出现。

答案 2 :(得分:0)

尝试:

$submissions = array(342, 343, 344, 355);
$in_both     = '342,344';

foreach ( explode(',', $in_both) as $value ) {
  if(($key = array_search($value, $submissions)) !== false) {
    unset($submissions[$key]);
  }
}

答案 3 :(得分:0)

你必须使用expolde函数和“,”分隔符,然后循环遍历由explode创建的数组

$in_both = "342,344";
$in_both_arr = explode(",",$in_both);
foreach($in_both_arr as $val)
   if(($key = array_search($val, $submissions)) !== false) {
    unset($submissions[$key]);
   }
}