array (size=9)
0 =>
array (size=2)
'x' => int 1
'y' => int 4
1 =>
array (size=2)
'x' => int 1
'y' => int 5
2 =>
array (size=2)
'x' => int 1
'y' => int 6
3 =>
array (size=2)
'x' => int 1
'y' => int 7
4 =>
array (size=2)
'x' => int 1
'y' => int 8
5 =>
array (size=2)
'x' => int 4
'y' => int 9
6 =>
array (size=2)
'x' => int 5
'y' => int 9
7 =>
array (size=2)
'x' => int 6
'y' => int 9
8 =>
array (size=2)
'x' => int 7
'y' => int 9
以上是x和y坐标的数组,其中我绘制了战舰,我想搜索数组并在x,y发送时匹配x,y对数组返回true。我可以这样做,如果我自己选择x,或者自己选择y,但是无法搜索x和y。
function searcharray($value, $key, $array) {
foreach ($array as $k => $val) {
//echo $val[$key];
if ($val[$key] == $value) {
return TRUE;
//$val[$key];
}
}
return null;
}
$array;
// both these must match
$key='y';
$value=9;
$key2='x';
Varlue2='5';
$result = searcharray($value,$key,$array);
echo $result;
答案 0 :(得分:1)
您可以计算2个数组的交集。如果他们有共同元素,则结果为true
,否则为false
。但是,因为您要比较多维数组,所以需要使用自定义函数进行比较,因此应使用array_uintersect()
计算交集:
$haystack = [['x'=>'1','y'=>'1'],['x'=>'2','y'=>'1']];
$search = [['x'=>'1','y'=>'1']]; // NOTE: this must be a multidimensional array
$result = (bool)array_uintersect($haystack, $search, function($a, $b) {
return strcasecmp($a['x'].$a['y'], $b['x'].$b['y']);
});
答案 1 :(得分:0)
function isArrayEntrySet($array, $x, $y) {
return (boolean) count(
array_filter(
$myArray,
function ($value) use ($x $y) {
return $value['x'] == $x && $value['y'] == $y;
}
)
) > 0;
}
$x = 9;
$y = 5;
if (isArrayEntrySet($array, $x, $y)) {
echo 'BANG!!!';
}
答案 2 :(得分:-1)
有几种方法可以达到你想要的效果,这里有一个很小的功能可以帮助你做到这一点:
function identical_values( $arrayA , $arrayB ) {
sort( $arrayA );
sort( $arrayB );
return $arrayA === $arrayB;
}
基本上我们首先对两个数组进行排序,然后比较它们是否相等===
等数组将返回TRUE
,而不同的返回FALSE
。
示例:
$array1 = array("x" => "green", "red", "blue", "red");
$array2 = array("x" => "green", "red", "blue", "red");
if(identical_values( $array1 , $array2 )){
echo "arrays are equal";
}