PHP 5.2: Filter array with multiple arguments performance -


i'm using code filter multidimensional array:

$sourcearray = array(                 array('name'=>'banana', 'color'=>'green'),                 array('name'=>'banana', 'color'=>'black'),                 array('name'=>'banana', 'color'=>'yelow'),           ); $arraytocompare = array('type'=>'fruits','has_name'=>'banana', 'has_color'=>'yelow');  $filtered = array();  foreach($sourcearray $item) {    if($item['name'] !== $arraytocompare['has_name']) continue;    if($item['color'] !== $arraytocompare['has_color']) continue;    $filtered[] = $item; } 

but think there might efficient/quicker solution.

in php 5.3 can use anonymous functions (closures) inside native filter_array() not supported in 5.2:

$filtered = array_filter(                 $masteritems,                 function ($arr) use ($arraytocompare) { // php 5.3 required here!!                     return ($arr['name'] == $arraytocompare['has_name']                         , $arr['color'] == $arraytocompare['has_color']);                 }             ); 

are there better approaches in term of speed?

php 5.2 accepts name of callback in array_filter function.

function filter($arr) {     $arraytocompare = array('type'=>'fruits','has_name'=>'banana', 'has_color'=>'yelow');      return $arr['name'] == $arraytocompare['has_name']           && $arr['color'] == $arraytocompare['has_color']; }  $filtered = array_filter($masteritems, 'filter'); 

Comments