2017-08-17 77 views
0

里面我有一个多维数组如下:我如何获得这个值多维数组

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

我要访问使用foreach循环的ID &名变量。

我使用这个:

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

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

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

$x++; 
} 

一些奇怪的原因,我只能拿到第一$ listId & $ name的值,而不是第二$ listId或$名称。

我在这里做错了什么?

+2

的可能的复制[获取多维数组的关键?(https://stackoverflow.com/questions/8940825/get-key-of-multidimensional-array) –

+1

您arraye-例子似乎是错误。你有6个开放性的对比,但只有2个关闭的对手。 – Roman

回答

1

您发布的数组是错误的,因为它缺少收盘),所以正确的,(我认为这是TYPO错误)

之后,你需要做的是象下面这样: -

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

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

或一个班轮鳕鱼E: -

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

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

2

你假设你仍然需要为每个子元素的关键。不是这种情况。

尝试

foreach($lists as $list){ 

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

    $listId $listName <br />"; 

} 

foreach()将遍历它们反过来。

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

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

其中$x是索引。

0

您的foreach重复您的多维数组的第一级,而不是第二级。

由于第一级仅将lists数组作为一个且唯一的元素,所以循环仅执行一次。

传递lists关键foreach,而不是像这样:

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

还要注意如何在这里我引用列表元素的名字,使其更易于阅读。

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>"; 
} 
0

你只需要做:

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

试试这个,我修正了你的数组结构的工作原理,这也是动态的,所以不管你有多少个数组0 - >以上

 $array = array(
         'lists' => array(
             '0' => array(
                'id' => '23ybdwhdwbed', 
                'name' => 'TEST 1' 
                ), 
             '1' => array(
                'id' => 'e223edsewed', 
                'name' => 'TEST 2' 
                ) 
            ) 
    ); 

     foreach ($array as $key => $value) { 

     for($ctr = 0; $ctr < count($value); $ctr++){ 
      echo 'ID: ' . $value[$ctr]['id'] . '<br>'; 
      echo 'Name: : ' . $value[$ctr]['name'] . '<br><br>'; 
     } 
     }