如何获取此多维数组中的值

时间:2017-08-17 07:58:32

标签: php arrays

我有一个多维数组如下:

Array
(
 [lists] => Array
    (
        [0] => Array
            (
                [id] => 23ybdwhdwbed
                [name] => TEST
            (
        [1] => Array
            (
                [id] => e223edsewed
                [name] => TEST 2
            (
    )
)

我想访问ID&使用foreach循环命名变量。

我正在使用它:

$x = 0;
foreach($lists as $list){

    $listId = $list[$x]['id'];
    $listName = $list[$x]['name'];

    echo"$x | $listId $listName <br />";

$x++;
}

由于一些奇怪的原因,我只能获得第一个$ listId&amp;的价值。 $ name,而不是第二个$ listId或$ name。

我在这里做错了什么?

6 个答案:

答案 0 :(得分:2)

您假设您仍需要为每个子元素提供密钥。事实并非如此。

foreach($lists as $list){

    $listId = $list['id'];
    $listName = $list['name'];

    $listId $listName <br />";

}

foreach()将依次迭代它们。

如果您确实需要索引编号,请改为执行此操作。

foreach($lists as $x => $list){

其中$x是索引。

答案 1 :(得分:1)

您发布的数组错误,因为它缺少结束),所以更正(我认为 TYPO 错误)

之后你需要这样做: -

foreach($lists['lists'] as $key=> $list){
   $listId = $list['id'];
   $listName = $list['name'];
   echo "$key | $listId $listName <br />";
}

输出: - https://eval.in/846464

或单行代码: -

foreach($lists['lists'] as $key=> $list){
  echo "$key | ".$list['id']." ".$list['name']." <br />";
}

输出: - https://eval.in/846465

答案 2 :(得分:0)

你的foreach迭代多维数组的第一级,而不是第二级。

由于第一级只保留lists数组作为唯一元素,因此循环只执行一次。

lists密钥传递给foreach,如下所示:

$x = 0;
foreach($lists['lists'] as $list) {
    echo "$x | " . $list['id'] . " " . $list['name'] . "<br />"; 
    ++$x;
}

另请注意我在这里如何按名称引用列表元素以便于阅读。

答案 3 :(得分:0)

我认为那些数字索引只会让你感到困惑,所以试试这个:

$my_array = array(array("id" => "23ybdwhdwbed", "name" => "TEST"), array("id" => "e223edsewed", "name" => "TEST 2"));

要访问值:使用:

foreach($my_array as $my_data){
    echo "ID:" . $my_data["id"];
    echo "<br>";
    echo "NAME:" .$my_data["name"];
    echo "<br><br>";
}

答案 4 :(得分:0)

你只需要这样做:

{{1}}

答案 5 :(得分:0)

尝试这个,我修复了你的数组结构,这也是动态的,所以你有多少数组无关紧要 - &gt;上述

 SELECT ST_AsGeoJSON(ST_Transform(ST_Multi(ST_Union(coordinate)), 4326)) AS coordinate,  
 difference from stop_func(device_id, start_time, end_time) group by difference;