Foreach循环仅返回一个字母

时间:2014-12-14 15:51:04

标签: php mysql

我正在学习PHP基础知识,并且存在一个我无法理解的问题。

我正在尝试获取一些文章

$result = mysqli_query($link, 'SELECT id, title, url FROM articles');
while ($row = mysqli_fetch_array($result)) {
    $articles[] = $row['title'];
}

我要输出标题

foreach ($articles as $a) {
    echo $a['title'];
}

实际上它只是输出标题的第一个字母。我的头衔是"测试"和另外的测试"我只是看到" t"和" a"作为输出。

出了什么问题?

3 个答案:

答案 0 :(得分:1)

你的代码错了,如果你想这样做,试试这个

foreach ($articles as $a) {
    echo $a;
}

或者这个,结果是相同的

$result = mysqli_query($link, 'SELECT id, title, url FROM articles');
while ($row = mysqli_fetch_array($result)) {
   $articles[] = $row;
}

在你的代码中,你在第一个代码中传递字符串,而在第二个代码中你要访问具有键标题的元素的数组,它将不起作用,因为它已经是一个字符串。

答案 1 :(得分:1)

那是因为你要存储元素' title'的值。在一个新的数组中。你可以做两件事:

  • 只需打印$a
  • 即可
  • $row存储在新数组中

这意味着在你的while循环中,替换:

$articles[] = $row['title'];

通过

$articles[] = $row;

答案 2 :(得分:1)

  

第一次循环后,只需使用

echo "<pre>";
print_r($articles);
echo "</pre>";
  

然后使用

foreach($articles as $a) {
    echo $a;
}