从函数中,我得到一个像这样的多维数组:
[
[7, 18],
[12, 7],
[12, 7, 13],
]
我需要在主数组内的 3 个数组中查找重复值。例如,如果值
7
在 3 个数组中重复,则返回 7
。
<?php
$array = array(array(7,18), array(12,7), array(12, 7, 13));
$result = array();
$first = $array[0];
for($i=1; $i<count($array); $i++){
$result = array_intersect ($first, $array[$i]);
$first = $result;
}
print_r($result);//7
?>
使用我的自定义功能
function array_icount_values($arr,$lower=true) {
$arr2=array();
if(!is_array($arr['0'])){$arr=array($arr);}
foreach($arr as $k=> $v){
foreach($v as $v2){
if($lower==true) {$v2=strtolower($v2);}
if(!isset($arr2[$v2])){
$arr2[$v2]=1;
}else{
$arr2[$v2]++;
}
}
}
return $arr2;
}
$arr = array_icount_values($arry);
echo "<pre>";
print_r($arr);
exit;
输出
Array
(
[7] => 3
[18] => 1
[12] => 2
[13] => 1
)
希望这一定会对您有所帮助。
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
使用此代码
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('绿色', $array); // $key = 2;
您需要循环遍历第一个数组,对于其中的每个值,查看它是否为 in_array()。
$findme = array();
foreach ($array[0] as $key => $value)
{
if (in_array ($value, $array[1]) && in_array ($value, $array[2]))
{
$findme[] = $value;
}
}
// $findme will be an array containing all values that are present in all three arrays (if any).
PHP 的
array_intersect()
已经完全具备执行此任务的能力。唯一必要的“魔法”是将子数组作为单独的参数展开——这就是展开运算符的用途(...
)。以下脚本将返回每行中出现的所有值的数组(无论其列如何)。 演示
$array = [
[7, 18],
[12, 7],
[12, 7, 13],
];
var_export(array_intersect(...$array));
输出:
array (
0 => 7,
)