访问多维数组中的第n个元素

时间:2013-09-17 20:33:54

标签: php multidimensional-array

有没有一种简单的方法来访问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。

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

试试这个:

<?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];
?>

答案 2 :(得分:-3)

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