我有一个带有表单的页面,我将所有复选框发布到我的数据库中的一个数组中。 我的数据库中的值如下所示:" 0,12,0,15,58,0,16"。 现在我列出了这些数字,一切正常,但我不想在我的页面上列出零值,我如何搜索数组并且不列出零值?
我爆炸了数组并使用for for each循环来显示当前的值。
答案 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