Php 你能给我澄清一下每一个问题吗

Php 你能给我澄清一下每一个问题吗,php,foreach,Php,Foreach,我不能理解foreach操作符。 我离开这个世界时可能是无知的。当然,我读过新手教程和示例,但如果有一个多一点的论点,那么对我来说就是一个黑匣子。。。因此,今天我有如下数据来源: Array ( [error] => [warning] => [status] => 0 [fields] => Array ( [0] => content ) [attrs] => Array ( [path] => 7 ) [matches] => Array (

我不能理解foreach操作符。 我离开这个世界时可能是无知的。当然,我读过新手教程和示例,但如果有一个多一点的论点,那么对我来说就是一个黑匣子。。。因此,今天我有如下数据来源:

Array ( [error] => [warning] => [status] => 0 [fields] => Array ( [0] => content ) [attrs] => Array ( [path] => 7 ) [matches] => Array ( [1] => Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test1.txt ) ) [2] => Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test2.txt ) ) [3] => Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test3.txt ) ) ) [total] => 3 [total_found] => 3 [time] => 0.000 [words] => Array ( [test1] => Array ( [docs] => 3 [hits] => 3 ) ) )
我找到了合适的样品

foreach ( $result["matches"] as $ID => $info ) {
      echo $ID." "; print_r($info); echo "<br>";
}

1 Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test1.txt ) ) 
2 Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test2.txt ) ) 
3 Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test3.txt ) ) 
                    }
foreach($result[“matches”]作为$ID=>$info){
echo$ID.“”;print_r($info);echo“
”; } 1个数组([weight]=>1319[attrs]=>Array([path]=>/home/test1.txt)) 2个数组([weight]=>1319[attrs]=>Array([path]=>/home/test2.txt)) 3个数组([weight]=>1319[attrs]=>Array([path]=>/home/test3.txt)) }
我无法理解它是如何工作的

  • 为什么当我更改IDD上的ID或inf上的信息时,程序仍然有效?这些变量如何连接到数据

  • 我应该如何更改我的foreach以获得:

  • /home/test1.txt
    /home/test2.txt
    /home/test3.txt

    as的左边部分是foreach的“输入”:通常是一个或一个对象/类

    右侧部分(
    $ID=>$info
    )是格式为
    $key=>$value
    的“输出”。如何命名右侧的2个变量完全取决于您,只要您稍后在循环中使用相同的名称

    在普通句子中,foreach的语法类似于:

    //For each (item of that) group   give me it's key and a    copy of the item     
    
    foreach(                 $array   as           $key =>      $value) {
    
    }
    
    请这样描述:

    foreach (array_expression as $value)
        statement
    foreach (array_expression as $key => $value)
        statement
    
    第一种形式在数组_表达式给出的数组上循环。在每次迭代中,当前元素的值被分配给$value,并且内部数组指针前进一个(因此在下一次迭代中,您将看到下一个元素)

    第二个表单将在每次迭代中额外地将当前元素的键分配给$key变量


    “as”的左边部分是foreach的“输入”:通常是一个数组或一个iterable对象/类。右侧部分是格式为
    $key=>$value
    的“输出”。因此,如何命名右侧的两个变量完全取决于您,只要您稍后在循环中使用相同的名称。
    as$ID
    类似于
    $ID=
    ,因此您可以使用任何您想要的变量名,因为值将分配给新变量
    $ID
    。@Jeff回答了第一个问题。第二种方法是使用echo($info['attrs']['path])而不是
    打印($info)。谢谢大家!现在我看到任何变量都会得到值!现在清楚了。代码也很有用!