Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查多维数组键是否多次位于数组中?_Php_Arrays - Fatal编程技术网

Php 如何检查多维数组键是否多次位于数组中?

Php 如何检查多维数组键是否多次位于数组中?,php,arrays,Php,Arrays,我有一个多阵列: Array ( [0] => Array ( [title] => f2 ) [1] => Array ( [title] => f2 ) [2] => Array ( [title] => f3 ) ) 我只想检查一个键(由$item表示)是否在数组中多次出现,因此在我的例子

我有一个多阵列:

Array ( 
    [0] => Array ( 
            [title] => f2 
        ) 
    [1] => Array ( 
            [title] => f2 
        ) 
    [2] => Array ( 
            [title] => f3 
        ) 
) 
我只想检查一个键(由
$item
表示)是否在数组中多次出现,因此在我的例子中,“f2”在数组中多次出现

我在_array中使用了
,但在多个数组中不起作用

然后我试了一下:

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

}
但这仍然不起作用。

和的组合可用于:

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

  [
    'title' => 'f2'
  ],

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

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

print_r($counts);
输出

Array
(
    [f2] => 2
    [f3] => 1
)
一旦获得总计数,您只需执行以下操作:

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


循环并计数,如果您已经看到您的搭档,请保释:

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

您可以筛选项目并查看计数是否大于1:

<?php

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

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

这就是您要查找的$onlyrayWithTitles=array_column($item,'title');如果显示警告/错误,您将得到
PHP警告:array\u count\u values():只能计算字符串和整数值
如果($counts[$item]??0)>1)
列表中不存在该项目,我可以建议
如果($counts[$item]??0)>1)
。@Script47不用担心,这只是一个小的编辑,但谢谢+1为solution@NigelRen当然,这是最好的方法,我假设OP 100%知道密钥会存在。@NigelRen这是PHP7中引入的新功能,因此需要补充一点,如果OP有较旧的版本,请使用
isset()
!empty()!空()
<?php

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

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