Echo数组作为字符串

时间:2013-09-13 20:12:27

标签: php arrays

我有一个echo'ing数组作为字符串的问题,我以前的代码看起来像这样:

$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;
}

所以,如果我为这个功能做预告,它会在2013年和2014年返回核心,但我不能这样做,所以我这样做了:

echo implode(', ', order_count_for_year($us_id));

它不起作用,它返回:array, array,我不明白为什么它不起作用,它适用于apliacation中的不同数组但不适用于此...

最后我想出了这样的废话:

$some_variable = '';
foreach(order_count_for_year($us_id) as $test) { $some_variable .= $test['YEAR(`date_posted`)'] . ', '; }
echo $some_variable;

它有效,但我不想让它变得那么复杂,我不觉得这是个好主意。任何人都知道为什么它不与implode一起工作,或者如何让它在没有循环的情况下工作?

请不要发布我必须使用变量进行内爆的答案,不需要它,即使 - 我测试了它,也不起作用。

2 个答案:

答案 0 :(得分:3)

那是因为你每次都在向数组添加$row,这本身就是一个数组。

您可能对mysql_fetch_row感兴趣:

while($row = mysql_fetch_row($query)) $orders_for_year[] = $row[0];

有了这个,调用哪个列并不重要。

或者,使用别名:

mysql_query("SELECT DISTINCT YEAR(`date_posted`) AS `year` FROM ...

然后您可以在关联数组中以$row['year']的形式访问它。

另外,在列名称周围实际使用反引号时会有+1。

答案 1 :(得分:1)

如果你不知道你正在处理的数据是什么,有一个简单的方法:使用var_dump($variable)

如果使用,你会立即发现你没有一个内部有两个年份字符串的数组,但是有两层数组。