dポイントプレゼントキャンペーン実施中!

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

A 回答 (3件)

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 です。
    • good
    • 0

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

    • good
    • 0

>$bbb = substr($xxx,2);


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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!