2017-04-10 4 views
1

$ array1で$ array2を探しているこのコードがあります。PHP - ループのない小文字の多次元配列

問題は、両方の配列を小文字にして、in_arrayの一致が機能し、このコードが期待どおりに動作するようにすることですが、$ array1は20kより大きいオブジェクトです - 配列構造を失うことなく小文字を使用しますとループ?

$array1 = array(code => 200, status => success, 
     array(
     'email' => '[email protected]', 
     'status' => 'Pending' 
     ), 
     array(
     'email' => '[email protected]', 
     'status' => 'Approved: Printed & Cleared' 
     ), 
     array(
     'email' => '[email protected]', 
     'status' => 'Approved' 
     ), 
     array(
     'email' => '[email protected]', 
     'status' => 'Approved: Printed & Cleared' 
     ), 
     ); 

$yourArray = array(); 
$array = array(); 
foreach ($array1 as &$array){ 

$yourArray[] = array_map('strtolower', $array); 

} 

echo "<pre>"; print_r($yourArray); 

$array2 = array(
     'email' => '[email protected]', 
     'status' => 'Pending' 
     ); 

$yourArray2 = array_map('strtolower', $array2);   

if(in_array($yourArray2 , $yourArray)) { 
echo "match"; 
} else { 
echo "no match"; 
} 

echo "<pre>"; print_r($yourArray2); 
+0

ノートをその 'array_walk'と' array_walk_recursive'は両方行うことができます。この – Machavity

答えて

0

あなたは常にpreg_grep()機能を使用することができます

preg_grep("/ONe/i", $yourArray2); 
+0

**注:**これは20Kの要素でリソースを大量に消費することができます。 –

+0

繰り返し回数が20kのループよりもリソース集約的ですか?私はそうは思わない。 – Saliery

+1

実際には、メモリ消費量が多いかもしれない。 [ループ](https://3v4l.org/RgFp4/perf#output)vs [grep](https://3v4l.org/Sm82a/perf#output) –