• ベストアンサー

多次元配列?配列のキー?変数の型?

PHP勉強中のものです。 予定通りの動作にならんく四苦八苦しています。 どのように修正すれば予定通りになるのか考え方のアドバイスなどお願いします。 処理したいこと 変数$xxxの先頭の文字と最後の文字をsubstr()で取り出し$aaaと$bbbに別けそれぞれ代入しキーとして多次元配列に代入した配列要素を指定してechoで出力したい 試してみたこと $aaa1と$bbb1に直接整数を代入してみたところ、echoで出力された キーになる変数を整数型として変数に代入してみたが希望通りの動作にならなかった。 なにかアドバイス頂けると助かります。 $array = array( "0" =>array("あいうえお","かきくけこ"), "1" =>array("さしすせそ") ); $xxx = "0-1"; $aaa = substr($xxx,0,1); $bbb = substr($xxx,2); $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない $aaa1 = 0; $bbb1 = 1; echo $array[$aaa1][$bbb1]; //出力された $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない

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

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

substrで最後の文字を取り出すには負のオフセットをつかえますので、 $lastchar = substr($xxx, -1) でOKです。 質問にあるスクリプトを切り出してちょっと書き加えて 実行してみましたが、出力されないとコメントされている ところも出力されました。 <?php $array = array( "0" =>array("あいうえお","かきくけこ"), "1" =>array("さしすせそ") ); $xxx = "0-1"; $aaa = substr($xxx,0,1); $bbb = substr($xxx,2); $aaa = (int)$aaa; $bbb = (int)$bbb; echo $aaa; echo $bbb; echo $array[$aaa][$bbb];//出力されない $aaa1 = 0; $bbb1 = 1; echo $array[$aaa1][$bbb1]; //出力された $aaa = (int)$aaa; $bbb = (int)$bbb; echo $aaa; echo $bbb; echo $array[$aaa][$bbb]; //出力されない 一応わたしの使ったバージョンを書いておくと、 Windows版の 5.2.1 です。

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

私もプログラム部分をそのままコピーし、コメント前の全角空白のみ削除して実行してみましたがちゃんと「かきくけこ」が3回出力されました。

  • gogo-tea
  • ベストアンサー率75% (25/33)
回答No.1

>$bbb = substr($xxx,2); これでは3文字目から最後までを取り出すことになってしまうので、最後の文字を取り出すのであれば $bbb = substr($xxx,strlen($xxx)-1); ではないでしょうか。

参考URL:
http://php.s3.to/man/function.substr.html

関連するQ&A