我有一个带有表单的页面,我将所有复选框发布到数据库中的一个数组中。我的数据库中的值如下所示:“0,12,0,15,58,0,16”。现在我列出了这些数字,一切正常,但我不希望在我的页面上列出零值,我如何能够搜索数组而不列出零值?
我正在分解数组并使用 for each 循环来显示此刻的值。
正确的做法是在数据库查询中插入 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
}
为了清理元素数组,您可以使用该array_filter
方法。
为了清除零,您应该执行以下操作:
function is_non_zero($value)
{
return $value != 0;
}
$filtered_data = array_filter($data, 'is_non_zero');
这样,如果您需要多次迭代数组,零已经从它们中删除。
您可以为此使用array_filter。如果要删除自定义条件下的项目,还可以在此函数中指定回调函数。
也许尝试:
$out = array_filter(explode(',', $string), function ($v) { return ($v != 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 值。
单线:
$string = '0,12,0,15,58,0,16';
echo preg_replace(array('/^0,|,0,|,0$/', '/^,|,$/'), array(',', ''), $string); // output 12,15,58,16
有很多方法可以做到这一点,从上面的答案中可以明显看出。
虽然这不是最好的方法,但它的逻辑对于 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。