2017-11-17 3 views
1

동적 배열을 만들어야하고 올바르게 만들 수 없습니다. 이 같은 뭔가가 필요합니다어레이에서 원하는 출력을 얻지 못했습니다.

제품 이름

  • 상단을
    • 화이트
    • 블랙
  • 아래
    • 레드

나는 위의 텍스트를 생산하고이 코드를 함께했다, 나의 논리는 바로 집에 있어야 될 줄 녹색. 위의 코드로 작성됩니다

$set = array(); 
$set['name'] = "Product Name"; 

$options = array("top", "bottom"); 
$values['top'] = array("White", "Black"); 
$values['bottom'] = array("Red", "Green"); 

echo "<pre>".$set['name']."</pre>"; 
foreach ($options as $o) { 
    echo "<pre>- $o</pre>"; 
    $set['options'][]['name'] = $o; 

    foreach ($values[$o] as $v) { 
     echo "<pre>-- $v</pre>"; 
     $set['options'][]['values']['name'] = $v; 
    } 
} 

배열입니다 : 내가 원하는

Array 
(
    [name] => Product Name 
    [options] => Array 
    (
    [0] => Array 
    (
    [name] => top 
    ) 
[1] => Array 
       (
        [values] => Array 
         (
          [name] => White 
         ) 

       ) 

      [2] => Array 
       (
        [values] => Array 
         (
          [name] => Black 
         ) 

       ) 

      [3] => Array 
       (
        [name] => bottom 
       ) 

      [4] => Array 
       (
        [values] => Array 
         (
          [name] => Red 
         ) 

       ) 

      [5] => Array 
       (
        [values] => Array 
         (
          [name] => Green 
         ) 
       ) 
     ) 
) 

출력은 : 나는 무엇을 놓치고

Array 
(
    [name] => Product Name 
    [options] => Array 
     (
      [0] => Array 
       (
        [name] => top 
        [values] => Array 
         (
          [0] => Array 
           (
            [name] => White 
           ) 

          [1] => Array 
           (
            [name] => Black 
           ) 

         ) 

       ) 

      [1] => Array 
       (
        [name] => bottom 
        [values] => Array 
         (
          [0] => Array 
           (
            [name] => Red 
           ) 

          [1] => Array 
           (
            [name] => Green 
           ) 

         ) 

       ) 

     ) 

) 

?

+0

은 당신이 원하는 출력으로 '배열을 만들 수 있습니다 ('최고'=> 배열 ('최고 ','bottom '));' – urfusion

답변

2

당신은

$set['options'][]['name'] = $o; 
       ^
      this one 

$set['options'][]['values']['name'] = $v; 
       ^
      This one 
외측에

뿐만 아니라 내부 루프

가지고있는 배열에 새로운 아이템을 첨가 하였다 (매우 있었다 같은 인덱스 0, 1, 2 ...) 그래서 당신이 원하는 것을 만들어 낼 수 없었습니다.

아래처럼 배열을 수정할 수 있습니다 당신은 자신에 의해 배열을 생성하는 경우

Demo

<?php 

$set = array(); 
$set['name'] = "Product Name"; 

$options = array("top", "bottom"); 
$values['top'] = array("White", "Black"); 
$values['bottom'] = array("Red", "Green"); 

echo "<pre>".$set['name']."</pre>"; 
foreach ($options as $o) { 
    echo "<pre>- $o</pre>"; 

    $vals = array(); 
    foreach ($values[$o] as $v) { 
     echo "<pre>-- $v</pre>"; 
     $vals[] = array('name' => $v); 
    } 
    $set['options'][] = array('name' => $o, 'values' => $vals); 

} 

print_r($set); 

?> 
+1

네, 고마워요. – mdgeus