如何使用PHP

时间:2017-02-09 08:44:48

标签: php arrays

我需要一个帮助。我需要通过使用PHP匹配键来从多个数组中删除值。我在下面解释我的代码。

$str="ram,,madhu,kangali";
$strid="1,2,,3";
$arr=explode(",",$str);
$arrId=explode(",", $strid);

我有两个数组i.e-$arr,$arrId,它有一些空值。在这里我需要,如果任何数组值为空,该值将被删除,而另一个数组中的相同索引值也将被删除。e.g-suppose for $arr the 1 index value is blank and it should delete and also the the first index value i.e-2 will also delete from second array and vice-versa.请帮助我。

3 个答案:

答案 0 :(得分:2)

试试这个:

 $str="ram,,madhu,kangali";
$strid="1,2,,3";
$arr=explode(",",$str);
$arrId=explode(",", $strid);
$arr_new=array();
$arrId_new=array();
foreach ($arr as $key => $value) {
  if(($value != "" && $arrId[$key] != "")){
    array_push($arr_new, $value);
    array_push($arrId_new, $arrId[$key]);
  }
}

var_dump($arr_new);
var_dump($arrId_new);

答案 1 :(得分:2)

尝试:

foreach ($arr as $key => $value) {
    if ( empty($value) || empty($arrId[$key]) ) {
        unset($arr[$key]);
        unset($arrId[$key]);
    }
}

答案 2 :(得分:1)

您可以将两个列表压缩在一起,然后只保留两个字符串都不为空的条目:

$zipped = array_map(null, $arr, $arrId);
$filtered = array_filter($zipped, function ($tuple) {
    return !empty($tuple[0]) && !empty($tuple[1]);
});
$arr = array_map(function($tuple) {return $tuple[0];}, $filtered);
$arrId = array_map(function($tuple) {return $tuple[1];}, $filtered);

Link to Fiddle