如何修复array_count_value中的空格错误

时间:2019-03-31 01:43:55

标签: php

我正在制作php数组计数值函数,我正在从文件获取内容中获取值并在其中使用它,并且想要对值进行计数,但是由于空间不足,这是我的代码

$data = file_get_contents('testr.txt');
preg_match_all('#mob:-(\S+)-#',$data,$matches);
$nu=$matches[1];

$n=implode($nu,',');

$n="9024453561,9024453561,9024453561,9024453561,9024453561 ";
//in value of $n i am getting spce at end so array_count _value not working

$array = array($n);
$counts = array_count_values($array);
echo $counts['9024453561'];

3 个答案:

答案 0 :(得分:0)

使用array_map(),将数据映射到您的通话implode,如下所示:

$n=array_map('trim', implode($nu,','));

这将删除数组值中的所有空白。

希望有帮助,

答案 1 :(得分:0)

您不会通过array($n)将字符串拆分为数组。相反,您将获得一个包含整个字符串(包括逗号)的单个元素。使用trimpreg_split获取值数组。

$n="9024453561,9024453561,9024453561,9024453561,9024453561 ";
$array = preg_split('~\\s*,\\s*~u', trim($n));
$counts = array_count_values($array);
echo $counts['9024453561'];

这还会拆分一个像" 123 , 456 , 789 "这样的字符串。 \s*表示零个或多个空格。双斜杠用于在字符串文字中转义斜杠。 trim从整个字符串的开头和结尾删除空格。

答案 2 :(得分:0)

根本不需要遍历implode,只需对您的array_count_values结果调用preg_match_all

$data = file_get_contents('testr.txt');
preg_match_all('#mob:-(\S+)-#',$data,$matches);
$nu=$matches[1];

$counts = array_count_values($nu);
echo $counts['9024453561'];