重複の可能性:
配列に別の配列のすべての要素が含まれているかどうかを確認する
私は以前にこのようなものをStackoverflowに投稿しましたが、答えは私を完全に満足させるものではありません。そのため、もう一度質問を投稿しますが、質問はずっと変更します。
array($GroupOfEight[$i])
多次元の要素であるarray($GroupOfEight)
が別の配列($ stackArray)と等しいかどうかを、配列内の番号の順序を無視してチェックする関数を作成するのを手伝ってくれた人もいます。
ただし、私がチェックする必要があるのは、言及されたものが多次元にarray($stackArray)
別のものを含んでいるかどうかです。つまり、mainは。よりも多くの要素で構成できます。array($GroupOfEight[$i])
array($GroupOfEight)
array($stackArray)
subarrays($GroupOfEight[$i])
これまでに収集した1つの動作するコードですが、必要なバージョンに変更する必要があります。
<?php
$GroupOfEight = array (
array(0,1,3,2,4,5,7,6),
array(4,5,6,7,15,12,13,14),
array(12,13,15,14,8,9,11,10),
array(2,6,14,10,3,7,15,11),
array(1,3,5,7,13,15,9,11),
array(0,4,12,8,1,5,13,9),
array(0,1,3,2,8,9,11,10)
);
$stackArray = array(0,4,12,1,9,8,5,13,9,2,5,2,10);
/*$stackArray gets value with POST Method by URL parameter.
This is just the example. As you see this array contains
$GroupOfEight[4], and also it contains many other numbers.*/
/* The function given below checks if $stackArray equals any
of the subarrays of $GroupOfEight. However, we want to check
if $stackArray caontains any of the subarrays of function.
If it does, function should return the index number, if it
doesnt it should return -1.*/
function searcheight($stackArray,$GroupOfEight){
for($i=0; $i<count($GroupOfEight);$i++){
$containsSearch = (count(array_intersect($stackArray,$GroupOfEight[$i])) == count($stackArray) && count(array_intersect($stackArray,$GroupOfEight[$i])) == count($GroupOfEight[$i]));
if($containsSearch){
return $i; //This specifies which index in GroupOfEight contains a matching array
}
}
return -1;
}
// Calling the function that is given above.
echo searcheight($stackArray,$GroupOfEight);
?>
論理的なアイデアや解決策をいただければ幸いです。ありがとう。