Php 作为字符串的Echo数组

Php 作为字符串的Echo数组,php,arrays,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_y

我遇到了将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;
}
因此,如果我对该函数执行foreach,它将正确返回2013和2014,但我不能这样做,因此我执行了以下操作:

echo implode(', ', order_count_for_year($us_id));
它不起作用,它返回:
数组,数组
,我不明白为什么它不起作用,它对应用程序中的不同数组起作用,但对这个数组不起作用

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

$some_variable = '';
foreach(order_count_for_year($us_id) as $test) { $some_variable .= $test['YEAR(`date_posted`)'] . ', '; }
echo $some_variable;
这是可行的,但我不想把它弄得那么复杂,我觉得这不是个好主意。有人知道为什么它不能和内爆一起工作,或者如何让它在没有回路的情况下工作吗


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

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

您可能对以下内容感兴趣:

这样,列的名称就无关紧要了

或者,使用别名:

mysql_query("SELECT DISTINCT YEAR(`date_posted`) AS `year` FROM ...
然后,您可以在关联数组中以
$row['year']
的形式访问它


此外,在列名周围实际使用反勾号时使用+1。

这是因为每次都要将
$row
添加到数组中,而数组本身就是一个数组

您可能对以下内容感兴趣:

这样,列的名称就无关紧要了

或者,使用别名:

mysql_query("SELECT DISTINCT YEAR(`date_posted`) AS `year` FROM ...
然后,您可以在关联数组中以
$row['year']
的形式访问它


另外,在列名周围实际使用反勾号时使用+1。

如果您不知道正在处理的数据是什么样子,有一个简单的方法:使用
var\u dump($variable)


如果使用,您会立即发现里面没有一个包含两年字符串的数组,而是两层数组。

如果您不知道要处理的数据是什么样子,有一个简单的方法:使用
var\u dump($variable)


如果使用,您会立即发现您没有一个包含两年字符串的数组,而是两层数组。

您只是将
$row
分配给
$orders\u for_year
;您需要将其指定为
$orders\u for_year[]=$row['date\u posted']旁注:
mysql\u查询
已标记为删除。你可能不应该用它。这是因为您使用变量时不知道其中包含什么。养成在遇到类似情况时使用变量的习惯。其他人都这样做。您只是将
$row
分配给
$orders\u,为期一年
;您需要将其指定为
$orders\u for_year[]=$row['date\u posted']旁注:
mysql\u查询
已标记为删除。你可能不应该用它。这是因为您使用变量时不知道其中包含什么。养成在遇到类似情况时使用变量的习惯。其他人都这样做。