0

我试图简单地回应返回的重量并做一些非常错误的事情。

这是返回数据的示例: Array ( [error] => [warning] => [status] => 0 [fields] => Array ( [0] => phrase ) [attrs] => Array ( )

   [matches] => Array
     (
        [34] => Array
            (
                [weight] => 1707
                [attrs] => Array
                    (
                    )

            )

    )

所以这是获取id的工作代码。这对我来说很有意义..

      if ( ! empty($result["matches"]) ) {
      foreach ( $result["matches"] as $doc => $docinfo ) {
            echo "DOC ID:$doc\n";
      }

      print_r( $result );
  }

我已经尝试使用 doc id 进行另一个 foreach,然后循环并获取权重..

foreach $doc as $weight  {

那行不通。我猜我在这里用多维数组做错了,但我不确定如何寻址嵌套数组..

谢谢

4

1 回答 1

1

你必须尝试递归函数

$array =array(
    "matches" => array(
        array("weight"=>1707,"attrs"=>array("weight"=>100)),
        array("weight"=>1700,"attrs"=>array("weight"=>170)),
        array("weight"=>10,"attrs"=>array("weight"=>170,"attr"=>array("weight"=>"something other")))
    )
);

function recurse($array){
    foreach ($array as $arr){
        if (is_array($arr)){
            recurse($arr);
        } else {
            echo $arr . "<br>";
        }
    }
}

recurse($array);

Note:此函数将返回weight任何级别数组中的每个参数值

更新

如果你只想weight从下面的数组中输出参数值,试试这个

$array =array(
    "matches" => array(
        array("weight"=>1707,"attrs"=>"other param"),
        array("weight"=>1700,"attrs"=>"something other too"),
    )
);

foreach($array['matches'] as $arr){
    echo $arr['weight'] . "<br>";
}
于 2013-02-24T19:33:21.677 回答