2017-08-17 71 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>'; 
     } 
     }