检查爆炸值计数是否大于0

时间:2012-01-03 17:45:55

标签: php

我正从mysql中的表中检索一些数据。值以|存储分体
例如:
test 1|test 2|test 4等等.. 除非列中有空白条目,否则一切都很有效。我使用以下代码。

$groups = explode('|', $row['groups']);
if(count($groups) >0) 
{
   echo 'There are values';

}else{ 
   echo 'No values';
} 

我遇到的问题是,即使列为空,也会返回“有值” 任何帮助都将非常感激。

2 个答案:

答案 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)

同时使用explodearray_filter,您可以将选项缩小到有效令牌:

function count_tokens($field)
{
  $tokens = array_filter(explode('|',$field),create_function('$a','return !empty($a);'));
  return sizeof($tokens);
}

Demo

           = 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