获取主数组索引

时间:2013-06-10 16:57:04

标签: php arrays

$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);

请你能帮帮我吗?

3 个答案:

答案 0 :(得分: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是否在其中一个子数组中。

答案 1 :(得分:0)

array_keys()总是返回数组类型,这意味着$ array_Search可能是array(4=>60);或空数组array()

答案 2 :(得分: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中发现了29    $ myArray的[2]
   $ myArray的[3]