我对PHP和编程都很陌生,所以我遇到了麻烦。
整个情况的目的是从制表符分隔文件中读取一列(已经这样做了),获取其中的所有不同项目,单独计算它们并将它们放在表格中用于具有第一列[ item value - label],Column2 [count]。
我在1维数组中有整列。现在,我想列出那里的所有项目及其旁边的计数。问题是,我可以有超过10个不同的项目,甚至更多,所以我不能手动完成(命名10个变量并计算每个),如下所示:
$arr = array("complete","fail","complete","exit","fail","fail","complete");
function isComplete($value){
return ($value == "complete") ? true : false;
}
$complete = array_filter($array, 'isComplete');
<tr>
<td>Complete</td>
<td><?php echo count($complete)?></td>
</tr>
-- > Complete = 3
我想避免为每个值手动创建每个函数,因为值可能因文件而异。
$ array中的项目数量可以达到20 + k所以我需要全部自动化。有人可以帮我这个吗?
答案 0 :(得分:2)
如何通过数组并将计数放在另一个数组中? ($arrCount
)
$arr = array("complete","fail","complete","exit","fail","fail","complete");
$arrCount = Array();
foreach($arr as $value){
$arrCount[$value] = array_key_exists($value,$arrCount) ? $arrCount[$value]+1 : 1;
//If this key exists, add 1 to it, else make it equal to 1
}
这将创建一个数组,其中键是各种标签,值与标签总数相同。
print_r
输出
数组([完整] =&gt; 3 [失败] =&gt; 3 [退出] =&gt; 1)
答案 1 :(得分:0)
Psuedo代码:
$arr = array("complete","fail","complete","exit","fail","fail","complete");
$counts = array();
foreach($arr => $key as $value)
{
if(array_key_exists($value, $counts))
{
$counts[$value]++;
}else{
$counts[$value] = 1;
}
}
foreach($counts => $key as $value)
{
echo '<tr>
<td>' . $key . '</td>
<td>' . $value . '</td>
</tr>';
}
我们正在列表中的元素数组。如果该项目存在,则增加否则使用值1创建。然后循环另一次以向用户显示每个项目的总计数。
答案 2 :(得分:0)
也许我错过了这一点,但正常循环的问题是什么? 例如:
function countByValue($array, $value){
$count = 0;
foreach($array as $val){
if ($val == $value){
$count++;
}
}
return $count;
}
并用
调用它$complete = countByValue($arr, 'complete');
如果你想一次性计算它们,请使用F4r-20答案。