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 に答える