2011-12-14 6 views
0

jQuery를 사용하여 동적으로 양식을 생성하기 때문에 어떤 이유로 루프 시간을 설정할 수 없습니다. 그것이 작동하지 않는 경우, 다차원 배열 루핑 PHP

<form action="testing.php" method="post" > 
<input type="text" name="product[1][name]" value="product1"/> 
<input type="text" name="product[1][color][]" value="product1color1"/> 
<input type="text" name="product[1][color][]" value="product1color2"/> 
<input type="text" name="product[1][color][]" value="product1color3"/> 

<input type="text" name="product[2][name]" value="product2"/> 
<input type="text" name="product[2][color][]" value="product2color1"/> 

<input type="text" name="product[3][name]" value="product3"/> 
<input type="text" name="product[3][color][]" value="product3color1"/> 


<input type="text" name="product[4][name]" value="product4"/> 
<input type="text" name="product[4][color][]" value="product4color1"/> 

<input type="submit" /> 

그리고 내 테스트 코드는 다음과 같이 결국 : 나는 일반적으로 모든 유효한 필드 루프 foreach를 사용, 주제에 대한 몇 가지 연구를했지만 나는이 작업을 수행하는 방법을 잘 모르겠어요 . = (

<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 

$product=$_POST['product']; 
//store everything that start with product into array 


    foreach($product as $key){ 
    //loop for product.1 product.2 and so on..... 

     //echo name of current product 
     echo $product[$key]['name']; 

      foreach($product[$key]['color'][] as $point){ 
      echo $point; 
      }//loop for every single available color field 

    }//end of product loop 
}// end of post request 

?> 
+0

수정 foreach는 같아야합니다 ($ 제품 [$ 키] [ '컬러'] [] $ 포인트 등)의 foreach ($ 점으로 $ 키 [ '색'])와 –

답변

1

$product = $_POST['product'];은 다음과 같습니다 다차원 배열로 HTML 양식에서 데이터를 드릴 것 문 :

Array(
    1 => Array(
     "name" => "product1", 
     "color" => Array(
      0 => "product1color1", 
      1 => "product1color2", 
      2 => "product1color3" 
     ) 
    ), 
    2 => Array(
     "name" => "product2", 
     "color" => Array(
      0 => "product2color1" 
     ) 
    ), 
    ... 
) 

ITER하려면 이 배열을 먹고, 당신이 할 필요가 :

각 패스에
foreach($product as $key1 => $prd) { 
    echo $prd['name']; 
    foreach($prd['color'] as $key2 => $point) { 
     echo $point; 
    } 
} 

, $key1 배열 키를 포함합니다 (1, 2, 3) 반면 $prd 해당 키와 관련된 항목이 포함됩니다 ($product[1], $product[2]$product[3]) . 필요한 경우 $key => 부분을 모두 생략 할 수 있습니다. 내부 루프도 마찬가지입니다.

+0

수정 해 주셔서 감사합니다! 흠, 나는 프로그래밍 세계에 새로운 것을 알았습니다. 또 하나의 질문입니다. 데이터를 처리하는 올바른 방법입니까? –

+0

이것은 질문에 게시 한 데이터를 처리하는 * 방법 중 하나입니다. :) –

1

귀하의 코드는 다음과

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 

$product=$_POST['product']; 
//print_r($_POST['product']); 
//store everything that start with product into array 


for($i=0; $i<count($product); $i++){ 
// foreach($product as $key){ 
    //loop for product.1 product.2 and so on..... 

     echo "<br/> &nbsp;".$product[$i]['name']; 


     for($j=0; $j<count($product[$i]['color']); $j++){ 
//  foreach($product[$key]['color'][] as $point){ 
      echo "<br/> &nbsp;&nbsp;".$product[$i]['color'][$j]; 
      }//loop for every single available color field 


    }//end of product loop 
}// end of post request