2017-04-10 49 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) –