アレイの値を直接エコーすることができないのはなぜですか?配列内の値をPHPでエコーできない
$list = array('Max', 'Alice', 'Brigitte');
echo($list); //This doesn't work
//But this does
foreach($list as $l){
echo($l . " ");
};
アレイの値を直接エコーすることができないのはなぜですか?配列内の値をPHPでエコーできない
$list = array('Max', 'Alice', 'Brigitte');
echo($list); //This doesn't work
//But this does
foreach($list as $l){
echo($l . " ");
};
エコーので - 1つ以上の文字列を出力
http://php.net/manual/en/function.echo.php
は、アレイ http://php.net/manual/en/function.var-dump.php
か、私が説明することができた場合を見てみましょう http://php.net/manual/en/function.print-r.php
をしますprint_rためのvar_dumpを使用してみてくださいこれは良い方法で。基本的に$ listには、もっと多くの要素と関連するものがあります。 $ listをエコーすると、実際にそれをどのように処理するのか分かりません。これは、配列データ型がPHPでどのように機能するかと関係しています。
あなたはecho($list);
は、いくつかの出力を生成しないことに気づいたかもしれません:
アレイ
$list
がecho
のコンテキスト内の文字列にキャストされるためです。その文の文字列変換
にアレイ:あなたは警告がオンになっていた場合、実際には、あなたは
お知らせを見るでしょう。配列を文字列に変換するときのdefined behavior of PHPは、配列が常に文字列
"Array"
に変換されることです。配列の内容をループせずに印刷したい場合は、配列をより効率的に文字列に変換するさまざまなPHP関数の1つを使用する必要があります。
$list
のような単純な文字列の場合は、implode
を使用できます。echo implode(', ', $list);
しかし、あなたはこれが原因で文字列変換の問題に同じ配列では動作しません(一部の要素は、例えば、配列そのものをしている場合)、より複雑な配列に対処する必要がある場合。
また、すべての要素をまとめて文字列にすることもできます。 'echo implode("、 "、$ list);'。あるいは、 '$ list [1]'が "Alice"を出力するような関連インデックスを使って直接値にアクセスします(PHPは0で始まるため)。 – Qirel