Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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 如何使用usort函数比较数组中的值?_Php_Arrays - Fatal编程技术网

Php 如何使用usort函数比较数组中的值?

Php 如何使用usort函数比较数组中的值?,php,arrays,Php,Arrays,创建三个数组并比较数组中的值 $array1 = array ("red", "yellow", "brown", "green"); $array2 = array ("green", "yellow", "black", "red"); $array3 = array ("red", "yellow", "brown", "black"); 试试这个,第一个数组的一个简单foreach,然后匹配所有数组都有这个值,如果有,将它添加到一个数组中 <?php $array1 = ar

创建三个数组并比较数组中的值

$array1 = array ("red", "yellow", "brown", "green");
$array2 = array ("green", "yellow", "black", "red");
$array3 = array ("red", "yellow", "brown", "black");



试试这个,第一个数组的一个简单foreach,然后匹配所有数组都有这个值,如果有,将它添加到一个数组中

<?php
$array1 = array ("red", "yellow", "brown", "green");
$array2 = array ("green", "yellow", "black", "red");
$array3 = array ("red", "yellow", "brown", "black");

$matched = [];
foreach ($array1 as $key => $value) {
    if ($array2[$key] === $value && $array3[$key] === $value) {
        $matched[$key] = $value;
    }
}

print_r($matched);
您不会得到索引
2
,因为黄色在
1

你也可以使用

您可以使用它来解决此问题,因为它只会在具有相同键的每个数组中返回相等的值:

输出:

Array
(
    [1] => yellow
)

1)您在代码中拼错了
usort
。2) 这是家庭作业吗?这不是你想要实现的理想功能。看看它更适合这个问题。同样,“红色”不也应该出现在结果中吗?它出现在所有三个数组中。结果仅为黄色。我认为您需要添加整个赋值,因为目前尚不清楚您需要在这里实现什么以及如何实现。如何使用usort函数获得输出?如果没有foreachusort,将无法减少数组,因此无法使用该函数。请告诉任何其他方法,比较函数和usort?您的函数后面没有内置什么(或者我忘了-不再大量使用php)。你可以用数组替换foreach_walkDid@LawrenceCherone回答帮助,詹姆斯?
Array
(
    [1] => yellow
)
$array1 = array_filter($array1, function ($value, $key) use ($array2, $array3) { 
   return $array2[$key] === $value && $array3[$key] === $value;
}, ARRAY_FILTER_USE_BOTH);
$array1 = array ("red", "yellow", "brown", "green");
$array2 = array ("green", "yellow", "black", "red");
$array3 = array ("red", "yellow", "brown", "black");

print_r(array_intersect_assoc($array1, $array2, $array3));
Array
(
    [1] => yellow
)