我正在制作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'];
答案 0 :(得分:0)
答案 1 :(得分:0)
您不会通过array($n)
将字符串拆分为数组。相反,您将获得一个包含整个字符串(包括逗号)的单个元素。使用trim
和preg_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'];