Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组计数和获取元素值_Php - Fatal编程技术网

PHP数组计数和获取元素值

PHP数组计数和获取元素值,php,Php,我对PHP和编程相当陌生,所以我在这方面遇到了麻烦 整个情况的目的是从以制表符分隔的文件(已经这样做了)中读取一列,获取其中的所有不同项,分别对它们进行计数,并将它们放入带有Column1[item value-label],Column2[count]的表中 我把整列放在一维数组中。现在,我想列出那里的所有项目及其旁边的计数。问题是,我可能有超过10个不同的项目,甚至更多,所以我不能像这样手动操作(命名10个变量并逐一计数): $arr = array("complete","fail","c

我对PHP和编程相当陌生,所以我在这方面遇到了麻烦

整个情况的目的是从以制表符分隔的文件(已经这样做了)中读取一列,获取其中的所有不同项,分别对它们进行计数,并将它们放入带有

Column1[item value-label],Column2[count]的表中

我把整列放在一维数组中。现在,我想列出那里的所有项目及其旁边的计数。问题是,我可能有超过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
$arr=数组(“完成”、“失败”、“完成”、“退出”、“失败”、“失败”、“完成”);
函数已完成($value){
返回($value==“complete”)?真:假;
}
$complete=array_filter($array,'isComplete');
完成
-->完成=3
我希望避免为每个值手动创建每个函数,因为每个文件的值可能不同


$array中的项目数最多可达20+k,因此我需要所有自动化项目。有人能帮我吗?

检查一下数组并将计数放入另一个数组如何?(
$arrCount

这将创建一个数组,其中键是各种标签,值等于标签总数

打印
输出:

阵列([完成]=>3[失败]=>3[退出]=>1)

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>';
}
$arr=数组(“完成”、“失败”、“完成”、“退出”、“失败”、“失败”、“完成”);
$counts=array();
foreach($arr=>$key作为$value)
{
如果(数组\键\存在($value,$counts))
{
$counts[$value]++;
}否则{
$counts[$value]=1;
}
}
foreach($counts=>$key作为$value)
{
回声'
“.$key。”
“.$value。”
';
}

我们正在制作列表中元素的数组。如果项目存在,则增加值,否则使用值1创建。然后再循环一次,向用户显示每个项目的总计数。

也许我没有抓住要点,但是正常循环有什么问题? 例如:

function countByValue($array, $value){
    $count  = 0;
    foreach($array as $val){
        if ($val == $value){
            $count++;
        }
    }
    return $count;
}
并称之为

$complete = countByValue($arr, 'complete');

如果你想一次把它们都数完,就用F4r-20回答。

我得到的是“注意:未定义索引:填写…”每$keyGreat!非常感谢。这正是我想做的。我将它与@Niels reply和table echo结合起来,得到了正确的结果。非常感谢你!这是“foreach($counts=>$key as$value)”的正确写法吗?我得到了语法错误。谢谢,我使用了你的第二部分代码和顶级答案,它按照我想要的方式工作;)
$complete = countByValue($arr, 'complete');