昨日は、生成された複数の配列の交差を判定する、つまり、これらの配列に交差があるかどうかを判定する必要がある関数を作成しました。今回は、必要な友達ができる PHP 配列の交差判定プログラムのコード例を紹介します。それを参照してください。
2 つの配列が交差するかどうかを判断する必要があります。私が最初に感じたのは、確かにこの関数があるはずだということでした。
配列 array_intersect(配列 配列1,配列 配列2[,配列N…])N 個の配列の交差要素を返します。連想配列の場合は、array_intersect_assoc() を使用できます。
PHPの場合は以下の通りです:
配列の交差 array_intersect()
array_intersect() 関数は、最初の配列に出現し、他のすべての入力配列に出現する値のみで構成されるキー保存配列を返します。その形式は次のとおりです:
コードをコピー | |
$fruit1 = array("アップル","バナナ","オレンジ");
$fruit2 = array("梨","リンゴ","ブドウ"); |
コードをコピー | |
$count = count($projects);
for($i=0;$i
If(!array_intersect(explode(',', $projects[$i]['role']),explore(',', $projects[$i]['next_approve_role']))){ |
$fruit2 = array("黄色"=>"梨","赤"=>"リンゴ","紫"=>"ブドウ");
$fruit3 = array("green"=>"スイカ","orange"=>"オレンジ","red"=>"リンゴ");
$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);
|
コードをコピー | |
$rand = function() {
$result = array(); } $result を返す;
};
$param_b = $rand();
|
まず、PHP の組み込みメソッド array_intersect によって達成されるパフォーマンスを見てみましょう:
コードをコピー | |
$time = マイクロタイム(true); $result = array_intersect($param_a, $param_b); $time = マイクロタイム(true) - $time; echo "array_intersect: {$time}n"; ?>
|
コードをコピー | |
$param_a = 配列(1, 2, 2);
$param_b = 配列(1, 2, 3);
Array_intersect($param_a, $param_b),
|
コードは次のとおりです | コードをコピー |
関数 int_array_intersect() $args = func_get_args(); foreach ($args AS $arg) { $intersect = function($a, $b) { $length_a = count($a); for ($i = 0, $j = 0; $i
If($a[$i] < $b[$j] && ++$i) { if($a[$i] > $b[$j] && ++$j) { $result[] = $a[$i]; if (isset($a[$next = $i + 1]) && $a[$next] != $a[$i]) { $result を返す; $result = array_shift($args); foreach ($args as $arg) { $result を返す; $time = マイクロタイム(true); $result = int_array_intersect($param_a, $param_b); $time = マイクロタイム(true) - $time; echo "int_array_intersect: {$time}n"; ?> |
直感的には、組み込み関数の方がカスタム関数よりも速いと思いますが、この場合、結果はまったく逆になります。
array_intersect: 0.023918151855469
int_array_intersect: 0.0026049613952637