配列を文字列としてエコーすることに問題があります。以前のコードは次のようになります。
$years = array('2013', '2014');
foreach($years as $year) {
//do rest of the code
残りのコードをより動的で「手間のかからない」ものにする時が来たと考えたので、新年が来るときに手動で入力する代わりに、データベースの年から選択する小さな関数を用意しました。
年抽出のコードは次のとおりです。
function order_count_for_year($us_id) {
$orders_for_year = array();
$query = "SELECT DISTINCT YEAR(`date_posted`) FROM `orders` WHERE `us_id` = {$us_id}";
$query = mysql_query($query);
while($row = mysql_fetch_assoc($query)) {
$orders_for_year[] = $row;
}
return $orders_for_year;
}
したがって、この関数に対して foreach を実行すると、2013年と2014年が正しく返されますが、そのようにすることはできないので、次のようにしました。
echo implode(', ', order_count_for_year($us_id));
そして、それは機能しません、それは戻ります: array, array
、なぜ機能しないのかわかりません。アプリケーション内のさまざまな配列では機能しますが、これでは機能しません...
最後に、私はそのようなでたらめを思いつきました:
$some_variable = '';
foreach(order_count_for_year($us_id) as $test) { $some_variable .= $test['YEAR(`date_posted`)'] . ', '; }
echo $some_variable;
それは機能しますが、それほど複雑にしたくありませんでした。これは良い考えだとは思いません。なぜ内破で動作しないのか、またはループなしで動作させる方法を知っている人はいますか?
内破に変数を使用する必要があるという回答を投稿しないでください。それは必要ありません。また、テストしても機能しません。