从关联数组中计算唯一值

时间:2013-02-20 01:40:36

标签: php mysql arrays

首先,感谢您的帮助。

我花了无数个小时在这里和其他论坛试图找到我的确切解决方案但是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);

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

即。显示 east 在“方向”列中显示的次数,并将其放在名为$eastcount的变量中。

我尝试了使用foreach循环和增量计数的各种组合,并尝试使用array_count_values但未能将各个部分组合在一起:/

4 个答案:

答案 0 :(得分:1)

这应该有用(抱歉我的iPhone上没有代码块)。

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

$ array = array(1,“hello”,1,“world”,“hello”); 的print_r(array_count_values($阵列));

阵 (     [1] => 2     [你好] => 2     [world] => 1 )

答案 1 :(得分: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'];

答案 2 :(得分:0)

首先,你应该使用mysqli。但是,无论如何我希望这是有道理的。

if ($result) {
    $count = 0;
    while ( $row = mysql_fetch_assoc($result)) {
        if ($row["route"] === "east") {
            $count += 1;
        }
    }
    return $count;
}

答案 3 :(得分:0)

// 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");