2013-06-10 4 views
0
$myArray 
(
    [0] => Array 
     (
      [0] => 27 
      [1] => 87 
      [2] => 76 
      [3] => 37 
      [4] => 69 
     ) 

    [1] => Array 
     (
      [0] => 2 
      [1] => 43 
      [2] => 56 
      [3] => 26 
      [4] => 60 
     ) 

    [2] => Array 
     (
      [0] => 36 
      [1] => 29 
      [2] => 59 
      [3] => 13 
      [4] => 65 
     ) 

    [3] => Array 
     (
      [0] => 63 
      [1] => 26 
      [2] => 29 
      [3] => 59 
      [4] => 28 
     ) 
) 

나는 $ myArray를 가지고 있습니다. 지정된 번호에 대한 주 배열 색인을 가져 오려고합니다.메인 어레이 색인 얻기

예 : 숫자가 37 인 경우 숫자가 56 인 경우 , 나는 숫자이면 내가 0 을 얻으려면, 나는 수가 69 인 경우 1 을 얻으려면, 0 을 얻으려면 28, 3을 얻고 싶습니다.

다음 기능을 사용하려고했지만 0이되었습니다. 오류가 있습니까?

function search2dArray($needle, $haystack) { 
    if (is_array($haystack)) { 
     for ($h = 0; $h < count($haystack); $h++) { 
      $arraySearch = array_keys($haystack[$h], $needle); 
      if ($arraySearch != 0) { 
       return $h; 
      } 
     } 
    } else { 
     return false; 
    } 
} 

echo search2dArray(60, $myArray); 

제발 도와주세요.

+0

http://php.net/manual/en/function.array-keys.php – rliu

답변

2
$myArray = array(
    array(27, 87, 76, 37, 69), 
    array(2, 43, 56, 26, 60), 
    array(36, 29, 59, 13, 65), 
    array(63, 26, 29, 59, 28), 
); 

function search2dArray($needle, $haystack) { 
    foreach ($haystack as $key => $subarray) { 
     if (in_array($needle, $subarray)) 
      return $key; 
    } 
} 

echo search2dArray(60, $myArray); //1 

이 그것을 수행해야합니다 배열을 통해 루프를하고 $needle가 서브 어레이 중 하나에 있는지 확인합니다.

0

array_keys()는 항상 reutrn 배열 형, 그건 당신이, 당신이해야합니다 interger 동일 모든 부분 배열 요소에 대한 기본 배열 인덱스를 취득해야하는 경우 array(4=>60); 또는 하늘의 배열 array()

0

어쩌면 평균 $ arraySearch입니다 같은 것을 할 :

<?php 
$myArray = array(
array(27, 87, 76, 37, 69), 
array(2, 43, 56, 26, 60), 
array(36, 29, 59, 13, 65), 
array(63, 26, 29, 59, 28), 
); 

function search2dArray($needle, $haystack) { 
$results_arr = array(); 
foreach ($haystack as $key => $subarray) { 
    if (in_array($needle, $subarray)) 
     array_push($results_arr, $key); 
} 
    echo $needle,' was found in<br />'; 

    foreach ($results_arr as $r_key => $master_index){ 
     echo '$myArray['.$master_index.']<br />' ; 
    } 


    } 

search2dArray(29, $myArray); //1 

?> 

출력 :

29
$에서 myArray에서 발견되었다 [2]
$ myArray [3]