我有一个由逗号(Implode)分隔的变量保持值,我试图得到该变量中值的总数,但是count()只是返回1.
我已经尝试将逗号分隔值转换为格式正确的数组,该数组仍会吐出out1。
所以继续sarray会话等于value1,value2,value3的快速片段:
$schools = $_SESSION['sarray'];
$result = count($schools);
任何帮助将不胜感激。
答案 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
希望这有帮助。