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
Post a Comment