+//
+// Search $needle in $haystack or in $haystack[][$valuekey]
+// returns array of keys of $haystack elements found
+//
+function array_search_keys($needle, $haystack, $valuekey=null)
+{
+ $keys = array();
+ if($haystack)
+ foreach($haystack as $key => $value) {
+ $val = isset($valuekey) ? $value[$valuekey] : $value;
+ if ($needle == $val){
+ $keys[] = $key;
+ }
+ }
+ return $keys;
+}
+//
+// Find first (single) $needle in $haystack or in $haystack[][$valuekey]
+// returns $haystack element found or null
+//