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 になります。
配列キーは必ずしも順番通りではなく、配列の各行の長さも同じではありません。
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 になります。
配列キーは必ずしも順番通りではなく、配列の各行の長さも同じではありません。
テストされていませんが、動作するはずです...
$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;
}
これを試して :
<?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];
?>