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)