- ベストアンサー
配列の要素数について
私はよくperlで for ($i=0; $i<=$#hoge; $i++) {} などと書いたりするのですが、phpで同じようにしたいのですが、 その際、perlの配列最後の添字を返す$#hogeにあたるものはないものなのでしょうか? あくまでforeachなど別の方法論や複数行ロジックを書いて取得するなどではなく配列の最後の添字を簡単に取得できるかが問題なのです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
count() 使い方は count() PHP とかで検索すべし。
その他の回答 (4)
- sakusaker7
- ベストアンサー率62% (800/1280)
#4 です。 キーとして使われる最大の数値を求めればいいということなら、 <?php $ary[1]=10;$ary[3]=100;$ary[7]=10000;$ary[5]=1000; print(count($ary)); print("\n"); print(end($ary)); print("\n"); print(key($ary)); print("\n"); print(end(array_keys($ary))); print("\n"); print(max(array_keys($ary))); 4 1000 5 5 7 max が使えなくもないですね。
- sakusaker7
- ベストアンサー率62% (800/1280)
PHPの配列はすべてPerlで言うところのハッシュなので、 質問者さんの求めるようなことを、お手軽に 行うことはできないと思います。 たとえば <?php $ary[1]=10;$ary[3]=100;$ary[7]=10000;$ary[5]=1000; print(count($ary)); print("\n"); print(end($ary)); print("\n"); print(key($ary)); print("\n"); print(end(array_keys($ary))); こんなのがあったとしてその実行結果は 4 1000 5 5 です。 質問で求められているのはここで、"7" を 得ることだと思うのですが、これを求めるような 関数はなかったように記憶しているのですが 違いますでしょうか?
- yambejp
- ベストアンサー率51% (3827/7415)
end(array_keys($hoge)); じゃないでしょうか?
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
perlをしっかり理解していないので見当はずれかもしれませんが、 配列の添字というのはPHPでは配列のキーと呼ぶものに当たりますよね。 配列の最後は end()で取得出来、キーはkey()で取得出来るので、 key(end($hoge)); と言う事になるでしょうか。 for ($i=0; $i<=$#hoge; $i++) {} はPHPでは、 $c = count($hoge); for ($i=0; $i<$c ; $i++) {} あたりが#1さん指摘の通り、一般的じゃぁないかと。 参考まで。
補足
タイトルが悪いのかもしれませんが、要素の数ではなく、最後の添え字を取得したいのです。