質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

3879閲覧

2次元配列の最後から○番目の要素を取り出す

mgcl

総合スコア1

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/11/13 03:38

前提・実現したいこと

phpで以下のような2次元配列の最後から○番目の要素を取り出す方法を考えています

$sum = Array ( [0] => Array ( [0] => 2020/10/01 [1] => 296242643 ) [2] => Array ( [0] => 2020/10/02 [1] => 313306913 ) [4] => Array ( [0] => 2020/10/03 [1] => 301919038 ) [6] => Array ( [0] => 2020/10/04 [1] => 296242643 ) [8] => Array ( [0] => 2020/10/05 [1] => 313306913 );

発生している問題・エラーメッセージ

end($sum)で末尾の要素をとれるので、end($sum)-3などを試したのですが、要素を取得できません.

補足情報(FW/ツールのバージョンなど)

要素の番号[0][2][4][6]は用いるデータでかわってしまうため、最後から○番目という指定によって取り出したいです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

1

こういうことですか?

php

1// 対象の配列 2$arr = [ 3 0=>['0a','0b'], 4 2=>['2a','2b'], 5 4=>['4a','4b'], 6 6=>['6a','6b'], 7]; 8 9// 取得を実行 10$n = 2; // 最後から2番目を指定 11var_dump( hoge($arr,2) ); 12 13// 取得の関数 14function hoge($arr,$n){ 15 return current(array_slice($arr, $n, 1, true)); 16} 17 18// var_dump の結果 19/* 20array(2) { 21 [0]=> 22 string(2) "4a" 23 [1]=> 24 string(2) "4b" 25} 26*/ 27

投稿2020/11/13 03:50

編集2020/11/13 03:53
ikatako

総合スコア270

tanat👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

地味にやるならこんな感じ・・・

投稿2020/11/13 04:02

yambejp

総合スコア117628

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/11/13 04:03

$n=2; $sum = [ 0=>["2020/10/01",296242643], 2=>["2020/10/02",313306913], 4=>["2020/10/03",301919038], 6=>["2020/10/04",296242643], 8=>["2020/10/05",313306913], ]; print_r($sum[array_keys($sum)[count($sum)-1-$n]]);
guest

0

あんまり綺麗なコードじゃないけど、

php

1<?php 2$i = 2; // 後ろからn番目 3$key = array_keys($sum)[count($sum) - $i]; 4var_dump($sum[$key]);

サンプル

投稿2020/11/13 03:49

編集2020/11/13 05:13
kyoya0819

総合スコア10434

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mgcl

2020/11/13 04:22

回答ありがとうございます. 要素についている番号は必ずしも昇順ではないので、krsortを使うと配列の順番が元のものと変わる可能性があって$sumの中身によっては思い通りに行かない気がしています...
kyoya0819

2020/11/13 05:13

修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問