PHP - 搜索数组的字符串

时间:2013-04-08 22:16:23

标签: php mysql arrays search for-loop

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

我爆炸了数组并使用for for each循环来显示当前的值。

7 个答案:

答案 0 :(得分: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
    }

答案 1 :(得分:1)

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

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

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

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

这样一来,如果你需要多次迭代数组,就会从中删除零。

答案 2 :(得分: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值。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

也许试试:

$out = array_filter(explode(',', $string), function ($v) { return ($v != 0); });

答案 5 :(得分: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之上。

答案 6 :(得分:0)

Oneliner:

$string = '0,12,0,15,58,0,16';
echo preg_replace(array('/^0,|,0,|,0$/', '/^,|,$/'), array(',', ''), $string); // output 12,15,58,16