• ベストアンサー

配列の要素数について

私はよくperlで for ($i=0; $i<=$#hoge; $i++) {} などと書いたりするのですが、phpで同じようにしたいのですが、 その際、perlの配列最後の添字を返す$#hogeにあたるものはないものなのでしょうか? あくまでforeachなど別の方法論や複数行ロジックを書いて取得するなどではなく配列の最後の添字を簡単に取得できるかが問題なのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • fake-tang
  • ベストアンサー率24% (186/772)
回答No.1

count() 使い方は count() PHP とかで検索すべし。

sa7s0ylx
質問者

補足

タイトルが悪いのかもしれませんが、要素の数ではなく、最後の添え字を取得したいのです。

その他の回答 (4)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.5

#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)
回答No.4

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)
回答No.3

end(array_keys($hoge)); じゃないでしょうか?

回答No.2

perlをしっかり理解していないので見当はずれかもしれませんが、 配列の添字というのはPHPでは配列のキーと呼ぶものに当たりますよね。 配列の最後は end()で取得出来、キーはkey()で取得出来るので、 key(end($hoge)); と言う事になるでしょうか。 for ($i=0; $i<=$#hoge; $i++) {} はPHPでは、 $c = count($hoge); for ($i=0; $i<$c ; $i++) {} あたりが#1さん指摘の通り、一般的じゃぁないかと。 参考まで。

関連するQ&A

専門家に質問してみよう