How to use PHP in_array with associative array?

Is there any php function like in_array for associative arrays that you get with mysql function "mysql_fetch assoc"?

For example, if I have an $ array that looks like this:

array(0=>(array(ID=>1, name=>"Smith"), 1=>(array(ID=>2, name=>"John")) 

Is it possible to do something like in_array(key,value,array)?

Or in my case, if I look for the identifier value "1", in_array("ID",1,$array) .

This is my solution, comment it if you think it is right:

 function in_assoc_array($key,$value,$array) { if (empty($array)) return false; else { foreach($array as $a) { if ($a[$key] == $value) return true; } return false; } } 
+9
source share
5 answers

Try this ..... You can use this function for any depth of the associated array. Just contrasting this function is that the key value will not be repeated in the array.

 <?php function is_in_array($array, $key, $key_value){ $within_array = 'no'; foreach( $array as $k=>$v ){ if( is_array($v) ){ $within_array = is_in_array($v, $key, $key_value); if( $within_array == 'yes' ){ break; } } else { if( $v == $key_value && $k == $key ){ $within_array = 'yes'; break; } } } return $within_array; } $test = array( 0=> array('ID'=>1, 'name'=>"Smith"), 1=> array('ID'=>2, 'name'=>"John") ); print_r(is_in_array($test, 'name', 'Smith')); ?> 
+11
source

In your case, I wonder if isset () is easy to use, i.e.

 isset($a[$key]) 
+31
source

You cannot do this directly on nested arrays .. You need to nest it a bit in it and then do it.

 <?php $arr=array(0=>array('ID'=>1, 'name'=>"Smith"), 1=>array('ID'=>2, 'name'=>"John")); foreach($arr as $arr1) { if(in_array(1,$arr1)) { echo "Yes found.. and the correspoding key is ".key($arr1)." and the employee is ".$arr1['name']; } } 

OUTPUT :

 Yes found.. and the correspoding key is ID and the employee is Smith 
+10
source

First you need to know how much of the associative array you are going to use as a haystack in the in_array function. Then you can use in_array without additional code.

Example with values:

 <?php $assoc = array(1 => "apple", 2 => "banana", 3 => "lemon", 4 => "pear"); $haystack = array_values($assoc); echo "<p>" . print_r($assoc, true) . "</p>"; $needle = 'banana'; $find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE'; echo "<p>$needle : $find</p>"; $needle = 'cherry'; $find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE'; echo "<p>$needle : $find</p>"; ?> 

Results in:

 Array ( [1] => apple [2] => banana [3] => lemon [4] => pear ) banana : TRUE cherry : FALSE 
+5
source

Sample form using class and methods:

 class VerifyInArray { public function getMyCollection($field, $collection) { $list = array(); if (count($collection)) { foreach ($collection as $k => $val) { $list[] = $val[$field]; } } return $list; } public function inMyArray($collection, $field, $findValue) { if (isset($collection[0])) { if (array_key_exists($field, $collection[0]) == false) { return 'no'; } } if (in_array($findValue, $this->getMyCollection($field, $collection))) { return 'ok'; } return 'no'; } public function displayInArray($collection, $attr, $value) { return 'search result: '. $this->inMyArray($collection, $attr, $value); } } $src = new VerifyInArray(); $collection = array( array( 'ID' => 1, 'name' => 'Smith' ), array( 'ID' => 2, 'name' => 'John' ) ); echo $src->displayInArray($collection, 'ID', 2). "\n<br>" . $src->displayInArray($collection, 'ID', 0); 

Model in ideon

0
source

All Articles