我正在从数据库中获取一些数据,然后将它们推送到一个数组中。我需要找到一些字符串的计数,并以一种有效的方式打印出结果( count ):
Array
(
[0] => q1-1,q2-2,q3-2,q4-1,q5-2,q6-3,q7-1,q8-4,
[1] => q1-1,q2-2,q3-1,q4-3,q5-3,q6-3,q7-2,q8-1,
[2] => q1-1,q2-1,q3-1,q4-1,q5-1,q6-2,q7-2,q8-2,
[3] => q1-3,q2-1,q3-1,q4-1,q5-2,q6-3,q7-1,q8-1,
[4] => q1-2,q2-2,q3-3,q4-1,q5-3,q6-3,q7-1,q8-1,
[5] => q1-1,q2-2,q3-3,q4-1,q5-2,q6-3,q7-1,q8-1,
[6] => q1-3,q2-1,q3-1,q4-3,q5-2,q6-3,q7-2,q8-4,
[7] => q1-2,q2-2,q3-3,q4-1,q5-2,q6-5,q7-1,q8-1,
[8] => q1-1,q2-1,q3-2,q4-3,q5-3,q6-5,q7-1,q8-1,
[9] => q1-2,q2-1,q3-1,q4-1,q5-3,q6-3,q7-1,q8-1,
[10] => q1-3,q2-2,q3-3,q4-3,q5-4,q6-3,q7-1,q8-1,
...
)上面是示例数据。
我需要知道q1-1,Q1-2...q8-4在数组中,并打印出可读版本。例如。它们是23: q1-1,412: q1-2,依此类推。
我打算创建一个包含需要搜索的每个字符串的数组,并遍历该数组。对于每个结果,递增该字符串的resultVariable,但我不确定这是否是最好的方法。
有什么建议吗?
发布于 2012-12-04 00:59:43
非常简单,循环您的数组,创建子数组,并创建一个计数器数组:
$counts = array () ;
foreach ( $your_array as $row ) {
$sub = explode(',', $row);
foreach ( $sub as $subval ) {
if ( array_key_exists ( $subval, $counts ) ) {
$counts[$subval] ++ ;
} else {
$counts[$subval] = 1 ;
}
}
}这是$counts
Array (
'q1-1' => 23,
'q1-2' => 9,
// and so on....
);发布于 2012-12-04 01:00:13
尝试:
$arr = array(...); //your array
$count = array();
foreach($arr as $v) {
$substr = explode(',', $v);
foreach($substr as $m) {
if(strstr($v, $m) !== FALSE)
$count[$m]++;
}
}打印计数,
foreach($count as $k => $v)
echo "Count for '$k': ". $v;https://stackoverflow.com/questions/13687992
复制相似问题