数组的回声值?

时间:2011-09-01 15:17:03

标签: php mysql html arrays echo

我想回显从搜索功能返回的所有数组的值。每个数组都包含一个$category,它是从我的数据库中收集的。到目前为止,我已将这些代码写为echo这些代码作为其原始值(例如,它们与我的数据库中的格式相同)是:

$rows = search($rows);

if (count($rows) > 0) {
    foreach($rows as $row => $texts) {
        foreach ($texts as $idea) {
            echo $idea; 
        }
    }
}

但是,此代码唯一回应的是我的数据库中存在的所有信息的长字符串。

该函数,我调用的结果如下:

function search($query) {

    $query = mysql_real_escape_string(preg_replace("[^A-Za-zÅÄÖåäö0-9 -_.]", "", $query));
    $sql = "SELECT * FROM `text` WHERE categories LIKE '%$query%'";

    $result = mysql_query($sql);

    $rows = array();

    while ($row = mysql_fetch_assoc($result)) {
        $rows['text'] = $row;
    }

    mysql_free_result($result);

    return $rows;
}

如何让它回显应该是数组值的实际文本?

4 个答案:

答案 0 :(得分:4)

此行:echo $rows['categories'] = $row;在您的搜索功能中存在问题。对于while循环中的每个传递,您将使用相同的键存储所有行。效果仅成功存储返回查询的最后一行。

你应该改变这个......

$rows = array();

while ($row = mysql_fetch_assoc($result)) {
    echo $rows['categories'] = $row;
}

mysql_free_result($result);

return $rows;

到此......

$rows = array();

while ($row = mysql_fetch_assoc($result)) {
    $rows[] = $row;
}

return $rows;

然后,当您访问返回的值时,您可以像下面那样处理它......

foreach ($rows as $key => $array) {
    echo $array['columnName'];
    // or
    foreach ($array as $column => $value) {
        echo $column; // column name
        echo $value; // stored value
    }
}

答案 1 :(得分:2)

问题是你有一个多维数组,即数组的每个元素都是另一个数组。

而不是

echo $row['categories']; 

尝试print_r

print_r($row['categories']);

这在技术上会按照您的要求进行,但更重要的是,它将帮助您了解子阵列的结构,因此您可以打印所需的特定索引,而不是将整个阵列转储到屏幕上。

答案 2 :(得分:1)

var_dump($rows)看起来像什么?听起来像是一个多维数组。您可能需要有两个(或更多)循环:

foreach($rows as $row => $categories) {
   foreach($categories as $category) {
      echo $category;
   }
}

答案 3 :(得分:0)

我认为这应该有效:

foreach ($rows as $row => $categories) {
    echo $categories;
}

如果这将再次输出一系列Array,请尝试查看其中的内容:

foreach ($rows as $row => $categories) {
    print_r($categories);
}