2016-04-20 149 views
0

我有一個數組與他們不同的數組與價值觀。我想循環這些數組以獲得所有值,但由於某種原因,它只能遍歷第一個數組。PHP循環多維數組與鍵

以下是陣列的外觀: 此陣列的名稱是插槽。

Array 
(
    [41] => Array 
     (
      [0] => Array 
       (
        [attractie] => attractie1 
        [start] => 0930 
        [end] => 1200 
        [personen] => 
        [catering] => 1 
        [bedrijfsnaam] => attractie1 
        [link] => http: 
        [color] => dd0330 
       ) 

      [1] => Array 
       (
        [attractie] => attractie1 
        [start] => 1000 
        [end] => 1230 
        [personen] => 
        [catering] => 1 
        [bedrijfsnaam] => Bedrijf2 
        [link] => http: 
        [color] => e49fca 
       ) 
     ) 

    [52] => Array 
     (
      [0] => Array 
       (
        [attractie] => attractie2 
        [start] => 0930 
        [end] => 1030 
        [personen] => 
        [catering] => 1 
        [bedrijfsnaam] => Bedrijf4 
        [link] => http: 
        [color] => f7e300 
       ) 

      [1] => Array 
       (
        [attractie] => attractie2 
        [start] => 0930 
        [end] => 1030 
        [personen] => 
        [catering] => 0 
        [bedrijfsnaam] => bedrijf5 
        [link] => http: 
        [color] => f78f1e 
       ) 

     ) 

) 

因此,這是我的循環看起來像:

$i=0; 
foreach($slots[$attractieIDs[$i]] as $s){ 

     $myOrders[] = array('attractie' => $s['attractie'], 
          'name' => $s['bedrijfsnaam'], 
          'start' => $s['start'], 
          'end' => $s['end'], 
          'link' => $s['link'], 
          'personen' => $s['personen'], 
          'catering' => $s['catering'], 
          'color' => $s['color'], 
          ); 
     $i++; 
} 

attractieID是與他們的id的(41和52)的陣列。

當我打印出$myOrders我只能看到ID爲41的數組的值,它不會用新的ID進入下一個數組。

任何人都知道我該如何解決這個問題?

非常感謝提前!

+0

什麼是你想要的輸出運行? –

+0

我想輸出數組的值爲52以及 –

+0

但它應該看起來**完全** –

回答

1

您當前的代碼會將來自41和52的條目合併到一個數組中,並且您將無法確定哪個數組是哪個數組。

$sourceArray = .... your source array here :) 
$attractieIDs = array(41, 52); 

foreach($attractieIDs as $id) { 
    foreach($sourceArray[$id] as $attr) { 
    $myOrders[] = $attr; 
    } 
} 
+0

我得到一個'非法的偏移類型'和無效參數'提供給foreach()'錯誤 –

+0

忘記一個級別。現在試試。 –

+0

@MarcinOrlowski,我收回了我之前的評論,但是有一些錯誤:你應該只需要2個循環。現在你只能得到值,沒有鍵,因爲$ s不是數組。 – trincot

0

試試這個循環:

foreach($slots as $outer_arr){ 

    foreach($outer_arr as $s) { 
     $myOrders[] = array('attractie' => $s['attractie'], 
       'name' => $s['bedrijfsnaam'], 
       'start' => $s['start'], 
       'end' => $s['end'], 
       'link' => $s['link'], 
       'personen' => $s['personen'], 
       'catering' => $s['catering'], 
       'color' => $s['color'], 
     ); 

    } 


} 

但目前尚不清楚你想要的輸出。

+0

$ outer_arr應該是什麼? –

+0

$ outer_arr將包含索引爲「41」和「52」的數組,以及一個用於遍歷數組的foreach循環。 – Meathanjay

+0

如果你可以添加'數組變量'不'數組輸出'我可以測試它。 – Meathanjay

0

試試這個。無論您有什麼索引,此循環都會在您的數組內輸出任何值。

<?php 
$test = array(
    '41' => array( 
     array('attractie' => 'attractie1', 
      'start' => '0930', 
      'end' => '1200', 
      'personen' => NULL, 
      'catering' => '1', 
      'bedrijfsnaam' => 'attractie1', 
      'link' => 'http:', 
      'color' =>'dd0330'), 
     array('attractie' => 'attractie1', 
      'start' => '1000', 
      'end' => '1230', 
      'personen' => NULL, 
      'catering' => '1', 
      'bedrijfsnaam' => 'Bedrijf2', 
      'link' => 'http:', 
      'color' =>'e49fca'), 
      ), 
    '51' => array( 
     array('attractie' => 'attractie2', 
      'start' => '0930', 
      'end' => '1030', 
      'personen' => NULL, 
      'catering' => '1', 
      'bedrijfsnaam' => 'Bedrijf4', 
      'link' => 'http:', 
      'color' =>'f7e300'), 
     array('attractie' => 'attractie2', 
      'start' => '0930', 
      'end' => '1030', 
      'personen' => NULL, 
      'catering' => '0', 
      'bedrijfsnaam' => 'bedrijf5', 
      'link' => 'http:', 
      'color' =>'f78f1e'), 
      ) 
    ); 

foreach ($test as $a => $val) { 
    echo "<b>Index $a</b><br><br>"; 
    foreach ($val as $b) { 
     foreach ($b as $key => $value) { 
      echo "<b>$key</b> - $value<br>"; 
     } 
    } 
    echo "<br><br>"; 
} 
?> 

輸出:

Index 41 

attractie - attractie1 
start - 0930 
end - 1200 
personen - 
catering - 1 
bedrijfsnaam - attractie1 
link - http: 
color - dd0330 
attractie - attractie1 
start - 1000 
end - 1230 
personen - 
catering - 1 
bedrijfsnaam - Bedrijf2 
link - http: 
color - e49fca 


Index 51 

attractie - attractie2 
start - 0930 
end - 1030 
personen - 
catering - 1 
bedrijfsnaam - Bedrijf4 
link - http: 
color - f7e300 
attractie - attractie2 
start - 0930 
end - 1030 
personen - 
catering - 0 
bedrijfsnaam - bedrijf5 
link - http: 
color - f78f1e 
1

您可以使用此:

foreach ($attractieIDs as $id) { 
    foreach ($slots[$id] as $s) { 
     $myOrders[] = $s; 
    } 
} 

看到它在eval.in