1

我有一个带有表单的页面,我将所有复选框发布到数据库中的一个数组中。我的数据库中的值如下所示:“0,12,0,15,58,0,16”。现在我列出了这些数字,一切正常,但我不希望在我的页面上列出零值,我如何能够搜索数组而不列出零值?

我正在分解数组并使用 for each 循环来显示此刻的值。

4

7 回答 7

2

正确的做法是在数据库查询中插入 WHERE 语句:

SELECT * FROM table WHERE value != 0

但是,如果您仅限于 PHP,只需使用以下代码 :)

   foreach($values AS $key => $value) {
      //Skip the value if it is 0
      if($value == 0) {
        continue;
      }

      //do something with the other values
    }
于 2013-04-08T22:19:32.347 回答
1

为了清理元素数组,您可以使用该array_filter方法。

为了清除零,您应该执行以下操作:

function is_non_zero($value)
{
    return $value != 0;
}

$filtered_data = array_filter($data, 'is_non_zero');

这样,如果您需要多次迭代数组,零已经从它们中删除。

于 2013-04-08T22:20:53.297 回答
0

您可以为此使用array_filter。如果要删除自定义条件下的项目,还可以在此函数中指定回调函数。

于 2013-04-08T22:20:51.983 回答
0

也许尝试:

$out = array_filter(explode(',', $string), function ($v) { return ($v != 0); });
于 2013-04-08T22:21:55.387 回答
0
$String = '0,12,0,15,58,0,16';
$String = str_replace('0', '',$String); // Remove 0 values
$Array = explode(',', $String);
foreach ($Array AS $Values) { 
     echo $Values."<br>";
    }

解释:

你有你的复选框,可以说这些值已转换为字符串。使用 str_replace 我们从您的字符串中删除了所有 0 值。然后,我们使用explode 和foreach 循环创建了一个数组。我们正在回显数组的所有值 minux 0 值。

于 2013-04-08T22:20:21.563 回答
0

单线:

$string = '0,12,0,15,58,0,16';
echo preg_replace(array('/^0,|,0,|,0$/', '/^,|,$/'), array(',', ''), $string); // output 12,15,58,16
于 2013-04-08T22:47:49.553 回答
0

有很多方法可以做到这一点,从上面的答案中可以明显看出。

虽然这不是最好的方法,但它的逻辑对于 phpnewbies 来说可能比上面的一些方法更容易理解。如果您需要保留原始值以供以后使用,也可以使用此方法。

$nums = '0,12,0,15,58,0,16';
$list = explode(',',$nums);
$newList = array();
foreach ($list as $key => $value) {
    //
    // if value does not equal zero
    //
    if ( $value != '0' ) {
        //
        // add to newList array
        //
        $newList[] = $value;
    }
}
echo '<pre>';
print_r( $newList );
echo '</pre>';

但是,我对最佳答案的投票投给了上面的@Lumbendil。

于 2013-04-08T22:33:16.550 回答