みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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]; //出力されない

投稿日時 - 2007-05-16 00:10:14

QNo.3003558

すぐに回答ほしいです

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

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 です。

投稿日時 - 2007-05-16 10:27:06

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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

投稿日時 - 2007-05-17 09:38:34

ANo.1

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

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

投稿日時 - 2007-05-16 08:51:54

あなたにオススメの質問