如何计算foreach中存在多少次相同的密钥

时间:2017-12-12 14:08:27

标签: php mysql wordpress count

我试图计算一个字符串在数组中的次数,如果它只是一次我想要回显这个字符串。 这是我的代码:

<?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';
            }
        }
    }
}

任何想法如何做到这一点? 提前致谢

2 个答案:

答案 0 :(得分:0)

这对你有帮助吗?

<?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

答案 1 :(得分:0)

我认为你需要改变

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”的值命名,这可能会令人困惑。