PHP数组计数和获取元素值

时间:2013-02-27 13:41:52

标签: php

我对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所以我需要全部自动化。有人可以帮我这个吗?

3 个答案:

答案 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答案。