2012-04-02 12 views
1

in_array多次元配列検索

$array=array (0 => array (0 => '',),1 => array (0 => 'sample.com',1 => 'test.com',2 => 'check.com',3 =>'rack.com',),2 => array (0 => '12345.34535',1 => '243.345345.4535',2 => '3453.534534',3 => '45.453453',),3 => array (0 => '978.797',1 => '789.7897997.7897',2 => '97897.78979.798',3 => '78978979',),4 => NULL,5 => NULL,6 => NULL,7 => NULL,8 => NULL,9 => NULL,10 => NULL,11 => NULL,12 => NULL,); 

Iオプションを可変に選択されたユーザを有する:

$options=array (0 => 'blreferrer',1 => 'ipwl',2 => 'ipbl',); 

を私は以下のコードを使用多次元配列から正しいキーを取得するには、ユーザーの選択からフォームを選択します。

$options1 = array(0=>"wlreferrer",1=>"blreferrer",2=>"ipwl",3=>"ipbl",4=>"geowl",5=>"geobl",6=>"languagewl",7=>"languagebl",8=>"browserwl",9=>"browserbl",10=>"oswl",11=>"osbl",12=>"viscount"); 

$option2 = (array_intersect($options1, $options)); 

$option3 = (array_keys($option2)); 

以下のコードはutilです。

$option4 = array(); 

$referrer = 'sample.com'; 

$ip = '789.7897997.7897'; 

$option5 = array(0=>$referrer,1=>$referrer,2=>$ip,3=>$ip,4=>$geo,5=>$geo,6=>$language,7=>$language,8=>$browser,9=>$browser,10=>$os,11=>$os,12=>$viscount); 

最後に、私がしようとすると、私は$のオプション4をプリントアウトするとき、それは0,1,0であるべきときに私は以下の結果を得

foreach ($option3 as $key) { 

if (in_array($option5[$key], $array[$key])) { 

array_push($option4, "0"); 

} else { 

array_push($option4, "1"); 

} 

} 

..

を検索する最初の多次元配列を検索するための化さ
Array ([0] => 1 [1] => 1 [2] => 1) 

私は多次元配列でin_arrayを使用することに問題があると考えていますが、解決策を見つけることはできませんでした。

+1

もう少し解決しようとしている最初の問題を説明できますか?出力はどの基準を基準に0,1,0ですか? – deceze

+0

たとえば、$ array [1]にはリファラーのリストが含まれています。リファラー$ referrerの配列をチェックしたいと思います。 – user1304713

答えて

0

この検索には、array_filterを使用できます。例:

$example_array = [your array]; 
$reference_array = [the values to be searched]; 

$filtered = array_filter($example_array,function($element)use($reference_array){ 
    foreach($element as $index=>$value){ 
     if(in_array($value,$reference_array)){ 
      return true; 
     } 
    } 
});