2

有没有一种简单的方法可以访问 php 中多维数组中的第 n 个元素?

所以例如

$arr = array( 
[0] => array(1,4,7,3,53),
[6] => array(6,3,9,12,51,7),
[2] => array(9,94,54,3,87));

第 12 个元素是 9。

数组键不一定按顺序排列,每个数组行的长度也不一定相同。

4

3 回答 3

-1

未经测试,应该可以工作...

$arr = array( 
0 => array(1,4,7,3,53),  // your code was wrong here
6 => array(6,3,9,12,51,7),
2 => array(9,94,54,3,87));

function getnth ($array, $offset) {
    $tmp_arr = array();
    foreach ($array as $key => $value) {
        foreach ($value as $val) {
        $tmp_arr[] = $val;
        }
    }
    return (isset($tmp_arr[$offset -1]) ? $tmp_arr[$offset -1] : FALSE);
}

getnth($arr, 12);

编辑:不得不承认,array_merge 版本更好......

Edit2:如果性能是一个问题,这可能会更快....

function getnth($array, $offset) {
    $i = 0;
    foreach ($array as $key => $value){
        $size = count($value);
        $i += $size;
        if($offset <= $i) {
            $new_off = $size - ($i - $offset) -1 ;
            return $value[$new_off];
        }
    }
    return FALSE;
}
于 2013-09-17T20:44:32.100 回答
-1

尝试这个 :

<?php
    $arr = array( 
     '0'=> array(1,4,7,3,53),
     '6'=>array(6,3,9,12,51,7),
     '2'=>array(9,94,54,3,87)
    );
    $newArray=array();
    foreach($arr as $array){

    $newArray=array_merge($newArray, $array);
    }
    echo $newArray[11];
?>
于 2013-09-17T20:46:05.533 回答
-4
function get_item($arr, $path, $delim = '.') {
    $path = explode($delim, $path);
    $result = $arr;
    foreach ($path as $item) {
        if (isset($result[$item])) {
            $result = $result[$item];
        } else {
            return null;
        }
    }
    return $result;
}

使用:

echo get_item($arr, 'item.value.3.4.2.etc');
于 2013-09-17T20:40:37.490 回答