提问者:小点点

从关联数组中计数唯一值


首先,谢谢你的帮助。

我在这里和其他论坛上花了无数个小时试图找到我的确切解决方案,但是要么1)我不理解我读过的那个,要么2)我没有找到正确的答案。

在PHP中,我运行了一个有点复杂的查询,它返回一组记录,类似于:

id | name | direction| 
1    aaa    east
2    bbb    west
3    ccc    east

我创建了一个关联数组,例如:

$query=("select * from foo");
$result=mysql_query($query);
$array=mysql_fetch_assoc($result);

现在,我需要做的似乎很简单,但出于某种原因,我没有掌握这个概念。我需要遍历整个$数组,并返回我想要指定的任何值的计数,并将该计数存储在变量中。

即。请告诉我在“方向”栏中显示了多少次东方,并将其放在一个名为$eastcount的变量中。

我已经尝试了使用Foreach循环与增量计数的各种组合,并尝试使用array_count_values,但无法将这些片段放在一起:/


共3个答案

匿名用户

// build query
$query=("select * from foo");

// execute query
$result=mysql_query($query);

// declare vars
$east_count = 0;

// iterate through results
while ($data = mysql_fetch_array($result)) {

    // grab DIRECTION column value
    $direction = $data['direction'];

    // detect 'east'
    if ($direction == 'east') {

        // increment 'east' count
        $east_count++;
    }
}

// print # of times we had 'east'
echo("direction said 'east' $east_count times");

匿名用户

这应该可以工作(抱歉缺乏代码块我在我的iPhone上)。

http://www.php.net/manual/en/function.array-count-values.php

$array=array(1,“你好”,1,“世界”,“你好”);打印(数组计数值($array));

数组([1]=

匿名用户

这个怎么样:

query=("select * from foo");
$result=mysql_query($query);

$directions = array();

while($direction = mysql_fetch_assoc($result) {
   $directions[] = $direction['direction'];
}

$directionCounts = array_count_values($directions);

//now you can access your counts like this:
    echo $directionCounts['east'];