我已尝试过这两种方法从这个数组中删除0值,但无效
foreach ($matches as $array_key=>$array_item)
{
if($matches[$array_key] == 0)
{
unset($matches[$array_key]);
}
}
var_dump ($matches[$array_key]);
和这个
$matches_without_nulls = array_filter($matches);
print_r($matches_without_nulls[1]);
但是,我一直得到的字符串是
{ [0] => string(7) "2337667" [1] => string(7) "2335765" [2] => string(7) "2332651" [3] => string(7) "2328582" [4] => string(1) "0" [5] => string(1) "0" [6] => string(1) "0" [7] => string(1) "0" }
有关正在发生的事情的任何想法吗?
答案 0 :(得分:3)
尝试更改:
if($matches[$array_key] == 0)
到
if($matches[$array_key] == "0")
答案 1 :(得分:3)
您的数组不包含0
(整数),它包含"0"
(字符串):
if($matches[$array_key] == "0")
这样就可以了。
PS:为什么要打印出不存在的值$matches[$array_key]
?它未被设置,因此提供了NULL
。使用var_dump ($matches);
测试您的代码。
我刚试过这个,它运作得很好:
$matches = array (
"2337667",
"2335765",
"2332651",
"2328582",
"0",
"0",
"0",
"0"
);
foreach ( $matches as $array_key => $array_item ) {
if( $matches[$array_key] == "0") {
unset($matches[$array_key]);
}
}
var_dump ($matches);
//output
array(4) {
[0]=> string(7) "2337667"
[1]=> string(7) "2335765"
[2]=> string(7) "2332651"
[3]=> string(7) "2328582"
}
答案 2 :(得分:3)
您的原始代码实际上是removing all the 0
entries along with other strings。您最好使用array_filter函数。
array_filter($matches, function($e){return $e!=0;});
只有array_filter without callback also works。我不知道为什么它不适合你。
答案 3 :(得分:2)
您可以使用 array_filter()功能。点击以下网址
答案 4 :(得分:0)
比较值而不是使用键
foreach($matches as $array_key=>$array_item)
{
if( $array_item == 0 ) // if($matches[$array_key] == 0)
{
unset($matches[$array_key]);
}
}
var_dump ($matches);
OR
您也可以尝试下面的内容
foreach($matches as $array_key=>$array_item)
{
if( !$array_item ) // if $array_item is below, it will get in the loop and excute your code.
{
unset($matches[$array_key]);
}
}
var_dump ($matches);
答案 5 :(得分:0)
嗨,大家好我认为Dainis Abols是因为他帮我解决了这个问题
问题是多指数;这是工作解决方案
foreach($matches[1] as $array_key=>$array_item)
{
if($matches[1][$array_key] == "0")
{
unset($matches[1][$array_key]);
}
}
var_dump ($matches[1])