アプリ版:「スタンプのみでお礼する」機能のリリースについて

getImages($ID) という独自で作った関数での疑問ですが、引数に、整数をセットすると、画像ファイルへのパスを取り出す単純な関数です。

これに、直接、整数値を入れて、
(例えば 引数に適当に34)
$data = getImages(34);

print_r($data);

のようにすると、この場合は、print_r()で確認すると、値は入っているのですが

Array
(
[img] => Array
(
[0] => img/30287978.jpg
)
)


多次元配列に入った数値をそのまま代入すると、同じように出力しても、空で出力されます。

$data = getImages($number['user_id'][0]['image']);
print_r($data);

Array
(
[img] => Array
(

)
)

これはなぜなんでしょう? 解決したいのですが、もし心当たりがありましたら、アドバイスください。よろしくお願いします。

質問者からの補足コメント

  • 関数にセットした、 $number['user_id'][0]['image'] をechoしてみると、数値は表示されるので、中身は入っています。

      補足日時:2017/05/14 23:09

A 回答 (2件)

どういうときに、どんな風にダメなのかを調べて、法則を見つけて直す。


プログラミングはそれの繰り返しです。

今回の場合、
・入力が、getImages関数が期待するものではない
・getImages関数が、期待とは違う動作をしている
の2つがまず考えられます。

> $number['user_id'][0]['image'] をechoしてみると、数値は表示される

とあります。
ならば、それを直接getImagesに指定したらどうなりますか?

「数値は表示される」は本当に「数値」なのでしょうか?
「数字の並んだ文字列」だったりしませんか?
表示したときに同じに見えても、内部では「数値」と「文字列」は別扱いされます。
$data = getImages(34);
だと大丈夫で
$data = getImages('34');
だとだめだとか。
http://php.net/manual/ja/function.var-dump.php
print_rではなく、var_dump ならどうなりますか?


また、その「数値」を指定したときに、
「対応する画像が無いので空になる」
のが
「正しい動作」
ということも考えられます。
    • good
    • 0
この回答へのお礼

ありがとうございます。要因は後者のほうでした。変数が空でした。
簡単なSNSを作っているのですが、新規会員登録した方の画像を表示する部分を作っていました。また、その部分をループで引数に入れて出力していたのですが、新規ということで画像を登録していなかったので、表示することができないという、なんとも初歩的なミスでした。また、確認で出力する際は、検証するために、既に画像を設定した会員のIDの数値を直接使っていたので、気づきませんでした。

お礼日時:2017/05/15 08:22

途中にある


Array
(
[img] => Array
(
[0] => img/30287978.jpg
)
)
とその次の
$data = getImages($number['user_id'][0]['image']);
との間にはどのような関係があるのでしょうか?

ただ, このような質問は, まずはその関数を作った人間にするべきだと思うよ.
    • good
    • 0

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