2012-04-07 2 views
3

내가이 같은 배열을 가정 해 봅시다.

나는 내가 그들을이 while 루프를 사용하여 얻을 수 있습니다 알고

while ($a = current($array)) { 
    if ($a == 'a') { 
     echo key($array).','; 
    } 
    next($array); 
} 

어떻게 내가 그들을 대신 foreach 루프를 사용하여 얻을 수 있나요?

foreach ($array as $a) { 
     if ($a == 'a') { 
      echo key($array).','; 
     } 

    } 

을하고 난 결과로

1,1,1

,

을 가지고 :

은 내가 시도했습니다.

+0

@myro ??? 'echo '($ a).', ';'값'a'를 얻고 결과는'a, a, a, '가 될 것입니다. –

+0

죄송합니다, 나는 오해했습니다 : – myro

답변

5

특정 값의 모든 키를 사용하려면 search_value 매개 변수 (선택 사항)를 사용하여 array_keys을 사용하는 것이 좋습니다. 당신은 그 값이 검색과 일치 할 때, 당신은 새로운 배열 컬렉션에 키를 추가, 각각의 키/값 집합을 반복 할 수있는 foreach를 사용하려면 $result

Array ( 
    [0] => Foo 
    [1] => Bar 
) 

된다

$input = array("Foo" => "X", "Bar" => "X", "Fizz" => "O"); 
$result = array_keys($input, "X"); 

: $keys

된다

$array = array("a","b","c","d","a","a"); 
$keys = array(); 

foreach ($array as $key => $value) 
    $value === "a" && array_push($keys, $key); 

Array ( 
    [0] => 0 
    [1] => 4 
    [2] => 5 
) 
+0

바로 가기 Jonathan .. !! – balanv

+0

내 대답을 추가 해주셔서 감사합니다. Jonathan ... !! – balanv

+0

감사합니다 !! 선택적인'search_value' 매개 변수와 함께'array_keys'를 사용하면 확실하게 동일한 결과를 얻는 더 좋은 방법입니다 :) –

1

당신은 특정 값

 

foreach ($array as $key=>$val) { 
     if ($val == 'a') { 
      echo $key." "; 
     } 

    } 
 
0

사용

foreach($array as $key=>$val) 
{ 
    //access the $key as key. 
} 
0

여기에 간단한 필터의와 키를 인쇄 할 아래 사용할 수 있습니다.

$query = "a"; 
$result = array_keys(array_filter($array, 
    function($element)use($query){ 
     if($element==$query) return true; 
    } 
)); 
관련 문제