我正在使用Sphinx构建搜索引擎,但由于我的PHP知识有限,我最终会显示结果。搜索服务器的请求给了我这个多维数组:
Array
(
[0] => Array
(
[id] => 327919409
[weight] => 3
[attrs] => Array
(
[group_id] => 327919409
[date] => 2013
)
)
[1] => Array
(
[id] => 84811232
[weight] => 2
[attrs] => Array
(
[group_id] => 84811232
[date] => 2013
)
)
[2] => Array
(
[id] => 150252575
[weight] => 2
[attrs] => Array
(
[group_id] => 150252575
[date] => 2013
)
)
[3] => Array
(
[id] => 174947829
[weight] => 2
[attrs] => Array
(
[group_id] => 174947829
[date] => 2013
)
)
[4] => Array
(
[id] => 297809970
[weight] => 2
[attrs] => Array
(
[group_id] => 297809970
[date] => 2013
)
)
[5] => Array
(
[id] => 391669252
[weight] => 2
[attrs] => Array
(
[group_id] => 391669252
[date] => 2013
)
)
)
我需要检索并列出所有ID值,我正在尝试使用此代码,但我得到的只是来自foreach的NULL值:
$query = $_GET['q'];
$index = "test1";
require_once('sphinxapi.php');
//Sphinx
$s = new SphinxClient;
$s->setServer("localhost", 9312);
$s->setMatchMode(SPH_MATCH_ALL);
$s->SetArrayResult(true);
//Search Query
$result = $s->Query($query, $index);
if ($result['total'] > 0) {
foreach ($result['matches'] as $key => $id) {
$ido = $id[$key]->id;
//Get Column
$searchColumn = mysql_fetch_array( mysql_query("SELECT * FROM rasti_failai WHERE ID=$ido") );
//Dump
var_dump($searchColumn);
}
} else {
echo 'No results found';
}
任何纠正我的foreach循环的帮助都会非常感激。
答案 0 :(得分:1)
您需要更改foreach
循环
$ido = $id[$key]->id;
替换为以下
$ido = $id["id"];
您正在循环遍历数组并且可以使用方括号访问mulch-dimentional数组,其中您正在使用object属性的语法。
答案 1 :(得分:0)
似乎问题出在我的SQL查询(?)中,因为我已经设法像这样设置id:
foreach ($result['matches'] as $id) {
echo $id['id'];
//$searchColumn = mysql_fetch_array( mysql_query("SELECT * FROM rasti_failai WHERE ID=$ido") );
//Dump
//var_dump($searchColumn);
}
无论如何,因为这不是foreach的问题,我的问题已经解决了。无论如何,谢谢谁试图帮助