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