开发者

Echo values of arrays?

I want to echo the values of all arrays that has been returned from a search function. Each array contains one $category, that have been gathered from my DB. The code that I've written so far to echo these as their original value (e.g. in the same form they lay in my DB.) is:

$rows = search($rows);

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

However, the only thing this code echoes is a long string of all the info that exists in my DB.

The function, which result I'm calling looks like this:

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

How can I make it echo the actual text that sh开发者_JAVA百科ould be the value of the array?


This line: echo $rows['categories'] = $row; in your search function is problematic. For every pass in your while loop, you are storing all rows with the same key. The effect is only successfully storing the last row from your returned query.

You should change this...

$rows = array();

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

mysql_free_result($result);

return $rows;

to this...

$rows = array();

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

return $rows;

Then when you are accessing the returned value, you could handle it like the following...

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


The problem is that you have a multi-dimensional array, that is each element of your array is another array.

Instead of

echo $row['categories']; 

try print_r:

print_r($row['categories']);

This will technically do what you ask, but more importantly, it will help you understand the structure of your sub-arrays, so you can print the specific indices you want instead of dumping the entire array to the screen.


What does a var_dump($rows) look like? Sounds like it's a multidimensional array. You may need to have two (or more) loops:

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


I think this should work:

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

If this will output a sequence of Array's again, try to see what in it:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜