簡體   English   中英

如何檢查多維數組鍵是否不止一次在數組中?

[英]How to check if a multidimensional array key is in an array more than once?

我有這個多數組:

Array ( 
    [0] => Array ( 
            [title] => f2 
        ) 
    [1] => Array ( 
            [title] => f2 
        ) 
    [2] => Array ( 
            [title] => f3 
        ) 
) 

我只想檢查一個鍵(由$item表示)是否在數組中不止一次,所以在我的情況下,'f2' 不止一次。

我嘗試使用in_array ,但它不適用於多 arrays。

然后我嘗試了這個:

$item='f2';
$array_count = array_count_values($titles);
if (array_key_exists($item, $array_count) && ($array_count[$item] > 1))
{
    echo 'more than once';

}

但這仍然行不通。

可以使用array_columnarray_count_values的組合:

 $arr = [
  [
    'title' => 'f2'
  ],

  [
    'title' => 'f2'
  ],

  [
    'title' => 'f3'
  ]
];

$counts = array_count_values(array_column($arr, 'title'));

print_r($counts);

Output

Array
(
    [f2] => 2
    [f3] => 1
)

獲得總數后,您可以簡單地執行以下操作:

if (($counts[$item] ?? 0) > 1) {
    // do action
}

閱讀材料

Null 合並算子

循環計數,如果您已經看過您的配對,請保釋:

<?php
$items =
[
    ['letter'=>'a'],
    ['letter'=>'a'],
    ['letter'=>'c']
];

$n = 0; $result = false;
foreach($items as $item) {
    if(($item['letter'] ?? null) == 'a' && $n++) {
        $result = true;
        break;
    }
}
var_dump($result);

Output:

bool(true)

您可以過濾您的項目並查看計數是否大於 1:

<?php

$items =
[
    ['letter'=>'a'],
    ['letter'=>'a'],
    ['letter'=>'c']
];

var_dump(count(array_filter($items, function($item) {
    return ($item['letter'] ?? null) == 'a';
})) > 1);

Output:

bool(true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM