在php中计算逗号分隔值,如何?

时间:2010-03-16 22:04:56

标签: php arrays count

我有一个由逗号(Implode)分隔的变量保持值,我试图得到该变量中值的总数,但是count()只是返回1.

我已经尝试将逗号分隔值转换为格式正确的数组,该数组仍会吐出out1。

所以继续sarray会话等于value1,value2,value3的快速片段:

$schools = $_SESSION['sarray'];
$result = count($schools);

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:20)

您需要explode $schools进入实际数组:

$schools = $_SESSION['sarray'];
$schools_array = explode(",", $schools);
$result = count($schools_array);

如果您只需要计数,并且100%确定它是一个干净的逗号分隔列表,您还可以使用substr_count(),这可能稍微快一点,更重要的是,对于具有非常大的数据集的内存更容易:

$result = substr_count( $_SESSION['sarray'], ",") +1; 
 // add 1 if list is always a,b,c;

答案 1 :(得分:3)

应该是

$result = count(explode(',',$schools));

答案 2 :(得分:1)

$schools = $_SESSION['sarray'];
$array = explode(',', $schools); array_walk($array, 'trim');
$count = count($array);

array_walk($array, 'trim')将删除元素值中的任何尾随空格。 :)

答案 3 :(得分:1)

实际上,它比那更简单:

$count = substr_count($schools, ',') + 1;

答案 4 :(得分:1)

如果sarray数组中设置了session键,则空字符串的计数也将返回1。

$session = array('sarray' => '');

$count = count(explode(',', $session['sarray']));

echo $count;

// => 1

因此,如果您想计算数组中的项目数,则必须为empty添加附加检查

$session = array('sarray' => '');

$count = !empty($session['sarray']) ? count(explode(',', $session['sarray'])) : 0;

echo $count;

// => 0

现在,让我们检查这是否适用于sarray内的项目。

$session = array('sarray' => 'foo, bar');

$count = !empty($session['sarray']) ? count(explode(',', $session['sarray'])) : 0;

echo $count;

// => 2

希望这有帮助。