2016-06-21 4 views
-3

のループ:PHP n列の配列、n個の項目、私はこの出力を作成したいループ

 
LG 
LG#Spain 
LG#Spain#Paypal 
LG#Spain#Paypal#Male 
LG#Spain#Paypal#Female 
LG#Spain#CCard 
LG#Spain#CCard#Male 
LG#Spain#CCard#Female 
LG#Croatia 
LG#Croatia#Paypal 
LG#Croatia#Paypal#Male 
LG#Croatia#Paypal#Female 
LG#Croatia#CCard 
LG#Croatia#CCard#Male 
LG#Croatia#CCard#Female 
LG#Czech 
LG#Czech#Paypal 
LG#Czech#Paypal#Male 
LG#Czech#Paypal#Female 
LG#Czech#CCard 
LG#Czech#CCard#Male 
LG#Czech#CCard#Female 
Sony 
Sony#Spain 
Sony#Spain#Paypal 
Sony#Spain#Paypal#Male 
Sony#Spain#Paypal#Female 
Sony#Spain#CCard 
Sony#Spain#CCard#Male 
Sony#Spain#CCard#Female 
Sony#Croatia 
Sony#Croatia#Paypal 
Sony#Croatia#Paypal#Male 
Sony#Croatia#Paypal#Female 
Sony#Croatia#CCard 
Sony#Croatia#CCard#Male 
Sony#Croatia#CCard#Female 
Sony#Czech 
Sony#Czech#Paypal 
Sony#Czech#Paypal#Male 
Sony#Czech#Paypal#Female 
Sony#Czech#CCard 
Sony#Czech#CCard#Male 
Sony#Czech#CCard#Female 

と私のコード:

<?php 

$delimiter = '#'; 

$keys = ['Brand','Country','Method','Gender']; 
$arr[$keys[0]] = ['LG','Sony']; 
$arr[$keys[1]] = ['Spain','Croatia','Czech']; 
$arr[$keys[2]] = ['Paypal','CCard']; 
$arr[$keys[3]] = ['Male','Female']; 

$sizeofdims = sizeof($keys); 
$main_key = $keys[0]; 


echo '<pre>'; 

foreach ($arr[$main_key] as $main_item) 
{ 
    $key_handle = $main_item; 
    echo "$key_handle\n"; 

    foreach ($keys as $i=>$k) 
    { 
     if ($k == $main_key) 
     { 
      continue; 
     } 

     foreach ($arr[$k] as $item) 
     { 
      $key_current = $key_handle; 
      $key_handle .= $delimiter.$item; 
      echo "$key_handle\n"; 

      if ($i+1 == $sizeofdims) 
      { 
       $key_handle = $key_current; 
      } 
      else 
      { 
       break; 
      } 

     } 
    } 
} 

echo '</pre>'; 

電流出力:については

 
LG 
LG#Spain 
LG#Spain#Paypal 
LG#Spain#Paypal#Male 
LG#Spain#Paypal#Female 
Sony 
Sony#Spain 
Sony#Spain#Paypal 
Sony#Spain#Paypal#Male 
Sony#Spain#Paypal#Female 
+4

を行うことができますあなたは何をしようとか?? –

+0

まあ、それで幸運。質問が来るのか、それとも...? –

+0

私たちはあなたを信じています。質問がない限りこれを行うことができます。そうでなければ幸運:-) – Jer

答えて

0

冗談のために私は最も簡単な解決法を提供します:

foreach ($arr[$keys[0]] as $brand) { 
    echo $brand . "\n"; 
    foreach ($arr[$keys[1]] as $country) { 
     echo $brand . '#' . $country . "\n"; 
     foreach ($arr[$keys[2]] as $method) { 
      echo $brand . '#' . $country . '#' . $method . "\n"; 
     } 
    } 
} 

しかし、次に自分で試してみてください。

0

あなたのアレイは動作するのが少し難しいです。私はそれを多次元配列に再編成することをお勧めします。

$array = array(
    'LG' => array(
     'Neverland' => array('Pirate gold', 'Magic coins', 'Fairy dust'),),) 
     'Fantasia' => array('Gems', 'Dragon Heartstring', 'Old underwear'),), 
    ), 
    'Sony' => array(
     'Neverland' => array('Pirate gold', 'Magic coins', 'Fairy dust'),),) 
     'Fantasia' => array('Gems', 'Dragon Heartstring', 'Old underwear'),), 
    ), 
); 

今、あなたは、次のループに

foreach ($array as $brand => $countries) { 
    echo $brand."<br />"; 
    foreach ($countries as $country => $paymentMethods) { 
     echo $brand."#".$country."<br />"; 
     foreach ($paymentMethods as $paymentMethod) { 
      echo $brand."#".$country."#".$paymentMethod."<br />"; 
     } 
    } 
}