我想回显从搜索功能返回的所有数组的值。每个数组都包含一个$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;
}
如何让它回显应该是数组值的实际文本?
答案 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);
}