【问题标题】:How to count how many times same key in foreach exists php如何计算foreach中相同键存在多少次php
【发布时间】:2018-05-26 06:10:11
【问题描述】:

我正在尝试计算一个字符串在数组中出现了多少次,如果它只有一次我想回显这个字符串。 这是我的代码:

<?php

global $wpdb;

$results = $wpdb->get_results($wpdb->prepare("SELECT id FROM wp_frm_items WHERE user_id=%d ORDER BY created_at DESC", 97));
$i = 0;

if ($results) {
    foreach($results as $row) {
        $policy_id = $wpdb->get_results($wpdb->prepare("SELECT meta_value FROM wp_frm_item_metas WHERE field_id=%d AND item_id=%s", 203, $row->id));

        $array = array($policy_id[0]->meta_value);

        foreach ($array as $key) {
            if (array_count_values($array) == 1) {
                echo $key;
            } else {
                echo 'aaa';
            }
        }
    }
}

任何想法如何做到这一点? 在此先感谢

【问题讨论】:

  • 您好 Stanislav,进行了编辑。让我知道这是否有效! :)

标签: php mysql wordpress foreach count


【解决方案1】:

我认为你需要改变

if (array_count_values($array) == 1){
    echo $key;
}

if (array_count_values($array)[$key] === 1) {
    echo $key;
}

array_count_values 返回一个关联数组,所以如果你想要 $word 的出现次数,你需要 array_count_values($array)[$word]。 此外,我不会在 foreach 中将数组的值命名为“$key”,这可能会让人很困惑。

【讨论】:

    【解决方案2】:

    这对你有帮助吗?

    <?php
    
    $details = [
        0 => ["id"=>"1", "name"=>"Mike",    "num"=>"9876543210"],
        1 => ["id"=>"2", "name"=>"Carissa", "num"=>"08548596258"],
        2 => ["id"=>"1", "name"=>"Mathew",  "num"=>"784581254"],
    ];
    
    function unique_multidim_array($array, $key) {
        $temp_array = [];
        $i = 0;
        $key_array = [];
    
        foreach($array as $val) {
            if (!in_array($val[$key], $key_array)) {
                $key_array[$i] = $val[$key];
                $temp_array[$i] = $val;
            }
            $i++;
        }
        return $temp_array;
    }
    
    $details = unique_multidim_array($details,'id'); // check on 'id' and remove duplicates
    
    echo '<pre>';
    var_dump($details);
    echo '</pre>';
    ?>
    

    上面的例子会输出:

    array(2) {
      [0]=>
      array(3) {
        ["id"]=>
        string(1) "1"
        ["name"]=>
        string(4) "Mike"
        ["num"]=>
        string(10) "9876543210"
      }
      [1]=>
      array(3) {
        ["id"]=>
        string(1) "2"
        ["name"]=>
        string(7) "Carissa"
        ["num"]=>
        string(11) "08548596258"
      }
    }
    

    现在您可以在这个数组上使用 foreach。它跳过了重复项。

    文档:http://php.net/manual/en/function.array-unique.php

    【讨论】:

    • 一秒钟,我会做出改变。
    猜你喜欢
    • 2015-03-10
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    相关资源
    最近更新 更多