我有一个页面,其中我将所有复选框发布到我的数据库中的一个数组中。 我的数据库中的值如下所示:“0,12,0,15,58,0,16”。 现在我列出这些数字,一切工作正常,但我不想零值在我的网页上列出,我怎么能够搜索数组,并不列出零值?PHP - 字符串搜索数组
我正在爆炸数组并使用每个循环来显示当前的值。
我有一个页面,其中我将所有复选框发布到我的数据库中的一个数组中。 我的数据库中的值如下所示:“0,12,0,15,58,0,16”。 现在我列出这些数字,一切工作正常,但我不想零值在我的网页上列出,我怎么能够搜索数组,并不列出零值?PHP - 字符串搜索数组
我正在爆炸数组并使用每个循环来显示当前的值。
做正确的事情是插入一个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
}
$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循环来创建一个数组。我们正在回应th数组minux 0值的所有值。
这不会起作用,即'$ string =“1,2,3,4,0”;' – 2013-04-08 22:37:53
@MichaelThessel删除了这个。由于脚本将被标点符号爆炸..然后它会自动删除 – 2013-04-08 22:38:57
您可以使用array_filter。如果要删除自定义条件上的项目,也可以在此函数中指定回调函数。
为了清理一组元素,可以使用array_filter
方法。
为了清理零的,你应该做到以下几点:
function is_non_zero($value)
{
return $value != 0;
}
$filtered_data = array_filter($data, 'is_non_zero');
,如果你需要遍历多次数组这样,零点就已经被从中删除。
也许尝试:
$out = array_filter(explode(',', $string), function ($v) { return ($v != 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上面。
Oneliner:
$string = '0,12,0,15,58,0,16';
echo preg_replace(array('/^0,|,0,|,0$/', '/^,|,$/'), array(',', ''), $string); // output 12,15,58,16
谢谢你的快速反应它解决了我处理这个问题,并没有任何线索,我可以很容易地解决它这一点。我想我会时不时地过分复杂化。 – Skugga 2013-04-08 22:24:28
嗯,这是一个常见问题。我每个程序员现在都有这个问题。问题是代码总是更高效,更快或更简单。只需花点时间来查看或询问问题。不要盯着自己的代码并暂停。它是最好的补救措施:p – 2013-04-08 22:28:18