我正从mysql中的表中检索一些数据。值以|存储分体
例如:
test 1|test 2|test 4
等等..
除非列中有空白条目,否则一切都很有效。我使用以下代码。
$groups = explode('|', $row['groups']);
if(count($groups) >0)
{
echo 'There are values';
}else{
echo 'No values';
}
我遇到的问题是,即使列为空,也会返回“有值” 任何帮助都将非常感激。
答案 0 :(得分:4)
<强> explode 强>
如果分隔符是空字符串(“”),则explode()将返回FALSE。 如果分隔符包含未包含在字符串中的值并且使用了负限制,则将返回空数组, 否则将返回包含字符串的数组
<?php
$g = "";
$e = explode('|',$g, -1) ;
if ($e) print "yes 1"; else print "Non 1";
$g = "";
$e = explode('|',$g, 1) ;
if ($e) print "yes 2"; else print "Non 2";
?>
Non 1
yes 2
问题是返回的数组包含一个空字符串的单个元素。
答案 1 :(得分:2)
同时使用explode
和array_filter
,您可以将选项缩小到有效令牌:
function count_tokens($field)
{
$tokens = array_filter(explode('|',$field),create_function('$a','return !empty($a);'));
return sizeof($tokens);
}
= 0 tokens
Foo = 1 tokens
Foo|Bar = 2 tokens
| = 0 tokens
|| = 0 tokens
Foo||Bar = 2 tokens
Foo|Bar| = 2 tokens
|Foo|Bar = 2 tokens