note 91663 modified in function.array-search by danbrown

From: Date: Mon, 22 Jun 2009 12:42:18 +0000
Subject: note 91663 modified in function.array-search by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-157219@lists.php.net to get a copy of this message
Here is a cool trick: <?php function arr_search ( $array, $expression ) { $result = array(); $expression = preg_replace ( "/([^\s]+?)(=|<|>|!)/", "\$a['$1']$2", $expression ); foreach ( $array as $a ) if ( eval ( "return $expression;" ) ) $result[] = $a; return $result; } $data = array ( array ( "name" => "bill", "age" => 40 ), array ( "name" => "john", "age" => 30 ), array ( "name" => "jack", "age" => 50 ), array ( "name" => "john", "age" => 25 ) ); print_r ( arr_search ( $data, "age>=30" ) ); print_r ( arr_search ( $data, "name=='john'" ) ); print_r ( arr_search ( $data, "age>25 and name=='john'" ) ); ?> -- results -- Array ( [0] => Array ( [name] => bill [age] => 40 ) [1] => Array ( [name] => john [age] => 30 ) [2] => Array ( [name] => jack [age] => 50 ) ) Array ( [0] => Array ( [name] => john [age] => 30 ) [1] => Array ( [name] => john [age] => 25 ) ) Array ( [0] => Array ( [name] => john [age] => 30 ) ) --was-- Here is a cool trick: function arr_search ( $array, $expression ) { $result = array(); $expression = preg_replace ( "/([^\s]+?)(=|<|>|!)/", "\$a['$1']$2", $expression ); foreach ( $array as $a ) if ( eval ( "return $expression;" ) ) $result[] = $a; return $result; } $data = array ( array ( "name" => "bill", "age" => 40 ), array ( "name" => "john", "age" => 30 ), array ( "name" => "jack", "age" => 50 ), array ( "name" => "john", "age" => 25 ) ); print_r ( arr_search ( $data, "age>=30" ) ); print_r ( arr_search ( $data, "name=='john'" ) ); print_r ( arr_search ( $data, "age>25 and name=='john'" ) ); -- results -- Array ( [0] => Array ( [name] => bill [age] => 40 ) [1] => Array ( [name] => john [age] => 30 ) [2] => Array ( [name] => jack [age] => 50 ) ) Array ( [0] => Array ( [name] => john [age] => 30 ) [1] => Array ( [name] => john [age] => 25 ) ) Array ( [0] => Array ( [name] => john [age] => 30 ) ) http://php.net/manual/en/function.array-search.php

« previous php.notes (#157219) next »