【问题标题】:php foreach loop multidimensional array having issuesphp foreach 循环多维数组有问题
【发布时间】:2012-04-06 14:51:52
【问题描述】:

我在获取多维数组中的值时遇到问题

Array
(
    [0] => Array
        (
            [name] => Brandow & Johnston, Inc.
            [lat] => 34.051405
            [lng] => -118.255576
        )

    [1] => Array
        (
            [name] => Industry Metrolink Train Station
            [lat] => 34.00848564346
            [lng] => -117.84509444967
        )

    [2] => Array
        (
            [name] => The Back Abbey
            [lat] => 34.095161
            [lng] => -117.720638
        )

    [3] => Array
        (
            [name] => Eureka! Burger Claremont
            [lat] => 34.094572563643
            [lng] => -117.72184828904
        )

)

假设我有一个上面这样的数组

我正在使用如下的 foreach 循环

foreach($_SESSION['array'] as $value){

    foreach($valueas $key_location=> $value_location){

        if($key_location = "name"){$fsq_name = $value_location;}
        $fsq_lat = $value_location["lat"];
        $fsq_lng = $value_location["lng"];



        echo "<i>".$fsq_lat."</i><br/>";

        }

    }

我尝试过使用 if 语句,或使用 $value_location["lat"];,但它没有产生正确的值。

如果我使用three equal 符号执行if($key_location === "lng"){$fsq_lng = $value_location;},它会给我一些迭代的错误,然后产生lng 结果。如果我只是做one equal 签名并回显它,它也会给我name 键。

我错过了什么吗?

谢谢

【问题讨论】:

  • 首先,foreach($valueas 似乎缺少一个空格。其次,您是否知道if($key_location = name) 将变量$key_location 设置为"name",然后评估为true?使用== 来检查相等或=== 来检查身份(类似于相等但更强)。

标签: php arrays multidimensional-array foreach


【解决方案1】:

也许重构一下?

foreach($_SESSION['array'] as $value)
{
    // pull the lat and lng values from the value
    $fsq_lat = $value["lat"];
    $fsq_lng = $value["lng"];
    $fsq_name = $value["name"];

echo "<i>".$fsq_lat."</i><br/>";


}// foreach

【讨论】:

    【解决方案2】:

    您实际上并不需要内部 foreach 循环。外部的就足够了,因为它遍历数组。内部数组可以通过外部foreach 中的键访问。

    foreach($_SESSION['array'] as $value){
      $fsq_name = $value["name"];
      $fsq_lat = $value["lat"];
      $fsq_lng = $value["lng"];
    
      echo "<i>".$fsq_lat."</i><br/>";
    
      // Actually none of the above assignments are necessary
      // you can just:
      echo "<i>".$value["lat"]."</i><br/>";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-30
      • 2010-10-24
      • 2015-09-21
      • 2015-06-02
      • 2015-10-30
      • 2014-12-29
      • 1970-01-01
      相关资源
      最近更新 更多