我试图通过跳过特定值来破坏数组。
我的数组是:
$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
任何人都可以帮助我两种方法我哪里错了?
答案 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
参数。