如何计算PHP中逗号分隔的值?

如何计算PHP中逗号分隔的值?,php,arrays,count,Php,Arrays,Count,我有一个用逗号分隔的变量(内爆),我试图得到该变量中值的总数。然而。count()刚刚返回1 我已经尝试将逗号分隔的值转换为一个格式正确的数组,该数组仍然会输出1 下面是一个快速片段,sarray会话等于value1、value2、value3: $schools = $_SESSION['sarray']; $result = count($schools); 您需要$schools到实际数组中: $schools = $_SESSION['sarray']; $schools_array

我有一个用逗号分隔的变量(内爆),我试图得到该变量中值的总数。然而。count()刚刚返回1

我已经尝试将逗号分隔的值转换为一个格式正确的数组,该数组仍然会输出1

下面是一个快速片段,
sarray
会话等于value1、value2、value3:

$schools = $_SESSION['sarray'];
$result = count($schools);
您需要
$schools
到实际数组中:

$schools = $_SESSION['sarray'];
$schools_array = explode(",", $schools);
$result = count($schools_array);
如果您只需要计数,并且100%确定它是一个干净的逗号分隔列表,您也可以使用它,它可能会稍微快一点,更重要的是,对于非常大的数据集,它在内存上更容易:

$result = substr_count( $_SESSION['sarray'], ",") +1; 
 // add 1 if list is always a,b,c;
array\u walk($array,'trim')
将删除元素值中的任何尾随空格。:)

应该是

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

事实上,它比这更简单:

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

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

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

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

echo $count;

// => 1
因此,如果要计算数组中的项数,必须为
空添加一个附加检查

$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

希望这能有所帮助。

谢谢大家,我会投票支持你们的——但我是新来的。@pekka。投票支持你的选择;)但是,对于substr_count,它应该是+1@pekka. 不是在count()中,而是在substr_count()示例中;)如果我错了,请原谅,但我想你的意思是
substr\u count
,为什么是-1?当然是+1?@adam是的,你是对的,我匆忙地键入了答案:)
$session = array('sarray' => 'foo, bar');

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

echo $count;

// => 2