Find the value in php array and get all keys

Is there a better (= faster) solution for getting all value keys in an array than a foreach loop if?

$array = array('apple', 'orange', 'pear', 'banana', 'apple', 'pear', 'kiwi', 'kiwi', 'kiwi'); 

print_r ($ array); will give to me:

 Array ( [0] => apple [1] => orange [2] => pear [3] => banana [4] => apple [5] => pear [6] => kiwi [7] => kiwi [8] => kiwi ) 

array_search ("kiwi", $ array); will give me 6

But I want all the keys of kiwi. So I want 6,7,8 . In this case.

Bruteforce Search Cycle:

  $searchObject = "kiwi"; $keys = array(); foreach($array as $k => $v) { if($v == $searchObject) $keys[] = $k; } 
+6
source share
3 answers

Alternatively, you can also use array_keys and provide a second parameter needle:

 $array = array('apple', 'orange', 'pear', 'banana', 'apple', 'pear', 'kiwi', 'kiwi', 'kiwi'); $searchObject = 'kiwi'; $keys = array_keys($array, $searchObject); print_r($keys); 

Sample Results

+14
source
 function array_search_values( $m_needle, $a_haystack, $b_strict = false){ return array_intersect_key( $a_haystack, array_flip( array_keys( $a_haystack, $m_needle, $b_strict))); } $array = array('apple', 'orange', 'pear', 'banana', 'apple', 'pear', 'kiwi', 'kiwi', 'kiwi'); print_r( array_search_values( 'kiwi', $array,true)); 
+1
source

Try it:)

 <?php $array = array('apple', 'orange', 'pear', 'banana', 'apple','pear', 'kiwi', 'kiwi', 'kiwi'); $count = count($array); $str_to_search = 'kiwi'; for($i=0;$i<$count;$i++){ if($array[$i] == $str_to_search){ echo $i.","; } } ?> 
-1
source

Source: https://habr.com/ru/post/981527/


All Articles