многомерный массив цикла php foreach, имеющий проблемы - PullRequest
2 голосов
/ 22 марта 2012

У меня проблемы с получением значений в моих многомерных массивах

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"];, но он не дает правильных значений.

Если я сделаю if($key_location === "lng"){$fsq_lng = $value_location;} со знаками three equal, это даст мне ошибки на несколько итераций, а затем выдаст результаты lng. если я просто подпишу one equal и выведу его, это также даст мне ключ name.

Я что-то упустил?

Спасибо

Ответы [ 2 ]

6 голосов
/ 22 марта 2012

На самом деле вам не нужен внутренний цикл 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/>";
}
0 голосов
/ 22 марта 2012

Может быть немного рефакторинг?

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
...