使用Sphinx PHP API从多维数组检索值

使用Sphinx PHP API从多维数组检索值,php,foreach,sphinx,Php,Foreach,Sphinx,我正在用Sphinx构建搜索引擎,但由于我的PHP知识有限,我最终只能显示结果。对search server的请求提供了以下多维数组: Array ( [0] => Array ( [id] => 327919409 [weight] => 3 [attrs] => Array ( [group_id] =

我正在用Sphinx构建搜索引擎,但由于我的PHP知识有限,我最终只能显示结果。对search server的请求提供了以下多维数组:

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中得到的只是空值:

$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循环,我们将不胜感激。

您需要更改
foreach
循环中的下一行

$ido = $id[$key]->id;
替换为下面的

$ido = $id["id"];

您正在数组中循环,可以访问带方括号的mollow维度数组,其中使用了对象属性的语法。

问题似乎出在我的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的问题,我的问题解决了。无论如何,感谢那些试图提供帮助的人

仍然获得空值。如果您认为我的答案有助于正确访问数组元素,请提供投票权