在PHP中跳过特定数组项的Implode数组

时间:2017-06-02 06:38:12

标签: php arrays

我试图通过跳过特定值来破坏数组。

我的数组是:

$unit = array("123","56","0","1","10","965","65","0"," ","63");

从上面的数组中,我不想要0(零)和空白值,而我会尝试这个:

$implode1 = implode(",", array_filter($unit));

Output : 123,56,1,10,965,65, ,63 (Skipping 0 but not blank value)

我尝试了array_filter功能的回调方法

下面的例子,我试图破坏数组,不想要0,1和空白值

$implode1 = implode(",", array_filter($unit,function($v,$k){
    return $v != " " || $v != '1' || $v != '0';
},ARRAY_FILTER_USE_BOTH));

output : 123,56,0,1,10,965,65,0, ,63

任何人都可以帮助我两种方法我哪里错了?

1 个答案:

答案 0 :(得分:1)

使用&&代替||

$implode1 = implode(",", array_filter($unit,function($v,$k){
    return $v != " " && $v != '1' && $v != '0';
},ARRAY_FILTER_USE_BOTH));

但在你的情况下,最好将值转换为int并检查:

$implode1 = implode(",", array_filter($unit,function($v,$k){
    return (int)$v > 1;
},ARRAY_FILTER_USE_BOTH));

这里将跳过零和空值(将转换为零)或甚至非数值(也将转换为零)。由于您不需要1,我还添加了greater than检查。

另外,由于您未在函数中使用$k,因此可以跳过它并ARRAY_FILTER_USE_BOTH参数。