2011-08-05 13 views
0

正確に同じ数字(重複なし)を含み、位置がシャッフルされた配列変数が2つある場合。インデックスによるphp配列の比較インデックス

入力配列

arr1={1,4,6,7,8}; 
arr2={1,7,7,6,8}; 

Result配列

arr2={true,false,false,false,true}; 

取得上記のようになるためにPHPの関数がありますか、ループを使用して行われる必要があります(私が行うことができます)のみ。

+0

ループ内で自分で行う必要があります。 PHPにはたくさんのヘルパー関数がありますが、既にハンマーが与えられているときに既製の家を見つけることは期待していません。 –

+0

これらの配列には正確な数字はありません。 'arr2'に重複があります。 – js1568

+0

@ js1568どちらの配列も重複しないことを意味します。数字は独自のものです。 – kiranking

答えて

3

これはarray_map()のための素晴らしいアプリケーションと匿名コールバックです(OK、私はそれらのクロージャを好むことを認めなければなりません。 - )

$a1 = array(1,4,6,7,8); 
$a2 = array(1,7,7,6,8); 

$r = array_map(function($a1, $a2) { 
    return $a1 === $a2; 
}, $a1, $a2); 

var_dump($r); 

/* 
array(5) { 
    [0]=> 
    bool(true) 
    [1]=> 
    bool(false) 
    [2]=> 
    bool(false) 
    [3]=> 
    bool(false) 
    [4]=> 
    bool(true) 
} 
*/ 

はい、あなたは何らかの方法で配列をループする必要がありますその他。

1

この作業がどのように行われても、要素をループする必要があります。ループを避ける方法はありません。

問題をどのように攻撃しようとしますか、そのようなことをするphp関数があってもループを使います。

0

このhttp://php.net/manual/en/function.array-diff.phpを使用できますが、ブール値の配列は返されません。配列1のどのデータが配列2にないかを返します。これがうまくいかない場合は、それらをループする必要があります。

0

array_diff()は、両方が等しい場合に空の配列を返します。

あなたの要望にお応えするには、配列を繰り返し処理し、各項目を比較する必要があります。

3

あなたはarray_mapを使用することができます

<?php 

$arr1= array (1,4,6,7,8) ; 
$arr2= array (1,7,7,6,8) ; 

function cmp ($a, $b) { 
    return $a == $b ; 
} 

print_r (array_map ("cmp", $arr1, $arr2)) ; 
?> 

を出力は次のとおりです。

Array 
(
    [0] => 1 
    [1] => 
    [2] => 
    [3] => 
    [4] => 1 
) 
関連する問題