2015-01-26 3 views
6

क्या कोई बेहतर (= तेज) समाधान है जिसमें फोरैच लूप की तुलना में सरणी में मूल्य की सभी कुंजी प्राप्त हो सकती है?php सरणी में खोज मूल्य और सभी कुंजियां

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

print_r ($ array); मुझे दे देंगे:

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

array_search ("कीवी", $ सरणी); मुझे

लेकिन मुझे कीवी की सभी चाबियाँ चाहिए। तो मुझे 6,7,8 चाहिए। इस मामले में।

bruteforce खोज पाश:

$searchObject = "kiwi"; 
$keys = array(); 
foreach($array as $k => $v) { 
if($v == $searchObject) $keys[] = $k; 
} 

उत्तर

14

वैकल्पिक रूप से, आप भी इस मामले में array_keys इस्तेमाल कर सकते हैं, और दूसरा पैरामीटर सुई प्रदान:

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

Sample Output

-1

प्रयास करें इस :)

<?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

क्या यह तेज समाधान है? मुझे ऐसा नहीं लगता –

1
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)); 
संबंधित मुद्दे