【问题标题】:PHP: Do I need nested foreach loops or multiple arrays?PHP:我需要嵌套的 foreach 循环还是多个数组?
【发布时间】:2022-01-23 20:55:52
【问题描述】:

我不确定描述我需要做什么的术语。两个嵌套的foreach循环?多个数组?多维数组?

我正在计算每个状态(AK、AL、AR 等)出现的总次数

$states_count[] = $state;
$count_by_state = array_count_values($states_count);

var_dump($count_by_state) 给了我

["AK"]=> int(3) ["AL"]=> int(6) ["AR"]=> int(4) ["AZ"]=> int(9) ["CA"]=> int(98) ["CO"]=> int(44) ....

所以阿拉斯加的总数是 3,阿拉巴马州的总数是 6,等等。

在单独的代码中,我使用这个 foreach 来构建一个菜单:

<?php $states = array('AK'=>'Alaska', 'AL'=>'Alabama'....  );

foreach ($states as $key => $value) {
echo $key; echo $value; echo ',';
} 

输出 AK Alaska, AL Alabama, AR Arkansas,...

但是我该如何让它工作呢?

foreach ($states as $key => $value) {
echo $key; echo $value; echo $each-individual-state-count-total from $count_by_state)

【问题讨论】:

    标签: php arrays foreach


    【解决方案1】:

    您可以使用 foreach 循环的键来索引 $count_by_state 数组(并可能首先检查该键是否存在)

    $count_by_state = [
        "AK" => 3,
        "AL" => 6,
        "XXX" => 9
    ];
    $states = array('AK' => 'Alaska', 'AL' => 'Alabama');
    
    foreach ($states as $key => $value) {
        if (array_key_exists($key, $count_by_state)) {
            echo $value . "," . $count_by_state[$key] . PHP_EOL;
        }
    } 
    

    输出

    Alaska,3
    Alabama,6
    

    【讨论】:

    • 我会反过来做,遍历 $count_by_state 并将键匹配到 $states 数组。这样,如果找不到完整的州名,我们可以简单地使用缩写:)
    • @MehrdadDastgir 这也是一个解决方案。如果你愿意,你可以发布。
    • 作为一个单独的答案并没有增加真正的价值,因此我希望它成为对此答案的评论
    • @Thefourthbird 谢谢,我明白了。我的下一个问题是在回显之前检查状态总数是否首先存在,但你已经涵盖了。
    猜你喜欢
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    相关资源
    最近更新 更多