0

首先,感谢您的帮助。

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

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

即告诉我东在“方向”列中出现了多少次,并将其放入一个名为 的变量中$eastcount

我尝试了使用foreach具有增量计数的循环的各种组合,并尝试使用array_count_values但无法将这些部分组合在一起:/

4

4 回答 4

1

这应该可以工作(对不起,我的 iPhone 上缺少代码块)。

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

$array = array(1, "你好", 1, "世界", "你好"); print_r(array_count_values($array));

数组( [1] => 2 [hello] => 2 [world] => 1 )

于 2013-02-20T01:47:52.700 回答
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'];
于 2013-02-20T01:49:33.737 回答
1
// 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");
于 2013-02-20T01:51:15.427 回答
0

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

if ($result) {
    $count = 0;
    while ( $row = mysql_fetch_assoc($result)) {
        if ($row["route"] === "east") {
            $count += 1;
        }
    }
    return $count;
}
于 2013-02-20T01:48:37.627 回答