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,我想得到0。如果数字是56,我想得到1。如果数字是69,我想得到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);

请问你能帮我吗?

4

3 回答 3

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之一中。

于 2013-06-10T16:59:05.920 回答
0

array_keys() always reutrn array type,that's mean $arraySearch maybe is array(4=>60); OR empty array array()

于 2013-06-10T17:06:48.143 回答
0

如果您需要获取所有等于整数的子数组元素的主数组索引,则需要执行以下操作:

    <?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]中找到

于 2013-06-10T17:22:10.767 回答