2011-05-06 9 views
5

Désolé de poser cette question idiote, ma tête était blackout à cause de magento.PHP tableau multidimensionnel convertir en formes

Voici le problème:

J'ai ici un tableau:

array(2) { 
    [0]=> 
    array(3) { 
    ["product_name"]=> 
    string(12) "Test Product" 
    ["product_qty"]=> 
    string(6) "2.0000" 
    ["product_price"]=> 
    string(7) "15.0000" 
    } 
    [1]=> 
    array(3) { 
    ["product_name"]=> 
    string(6) "Test 2" 
    ["product_qty"]=> 
    string(6) "3.0000" 
    ["product_price"]=> 
    string(7) "25.0000" 
    } 
} 

Comment puis-je faire transformer cela:

<input type="hidden" name="product1" value="Test Product" /> 
<input type="hidden" name="amount1" value="2" /> 
<input type="hidden" name="qty1" value="15" /> 
<input type="hidden" name="product2" value="Test 2" /> 
<input type="hidden" name="amount2" value="3" /> 
<input type="hidden" name="qty2" value="25" /> 

Merci pour votre réponse.

+4

Il est vraiment juste une question d'écho-ment le contenu du tableau dans une boucle. – gd1

+1

La question n'est aucunement idiote.J'avais prévu de poser cette question moi-même. – Gandalf

Répondre

5

Essayez ceci:

foreach($array as $pKey=>$product){ 
    foreach($product as $key=>$option){ 
     echo "<input type='hidden' name='{$key}_{$pKey}' value='$option'/>\n"; 
    } 
} 

Il vous donnera un résultat comme celui-ci:

<input type='hidden' name='product_name_0' value='Test Product'/> 
<input type='hidden' name='product_qty_0' value='2.0000'/> 
<input type='hidden' name='product_price_0' value='15.0000'/> 
<input type='hidden' name='product_name_1' value='Test 2'/> 
<input type='hidden' name='product_qty_1' value='3.0000'/> 
<input type='hidden' name='product_price_1' value='25.0000'/> 

Voici une démo: http://codepad.org/Eg2mejZH

+0

Techniquement, ils veulent aussi product_name -> product #, product_qty -> qty # et product_price -> amount #. – mellamokb

+0

@mellamokb fait! – Neal

2
foreach ($array as $i => $product) { 
    foreach ($product as $key => $value) { 
      $name = $key . $i; 
      echo "<input type='hidden' name='$name' value='$value' />"; 
    } 
} 
0

Même les plus faciles devraient inclure une bonne désinfection. Plus il y a d'exemples de ce que nous pouvons faire, mieux nous sommes tous.

foreach ($array as $i => $item) { 
    foreach ($item as $k => $v) { 
     $name = htmlspecialchars($k . ($i + 1)); 
     $value = htmlspecialchars($v); 
     echo "<input type=\"hidden\" name=\"$name\" value=\"$value\" />"; 
    } 
} 
0
$arrayLen = count($array); 
for ($i = 0;$i < $arrayLen;$i++) { 
    foreach ($array[$i] as $field => $value) { 
     printf("<input type='hidden' name='%s%d' value='%s'/>", preg_replace("/^product_/", "", $field), $i+1, $value); 
    } 
} 

vous donnera

<input type='hidden' name='name1' value='Test Product'/> 
<input type='hidden' name='qty1' value='2.0000'/> 
<input type='hidden' name='price1' value='15.0000'/> 
<input type='hidden' name='name2' value='Test 2'/> 
<input type='hidden' name='qty2' value='3.0000'/> 
<input type='hidden' name='price2' value='25.0000'/> 
+0

Pourquoi mixez-vous 'for' et' foreach'? pourquoi ne pas faire 2 boucles foreach? – Neal

+0

Pour obtenir le compteur, vous ne saviez pas que vous pouviez utiliser foreach => avec un tableau non associatif. – jamaicahest

0

essayer cette façon: dans le code HTML

<?php foreach ($allData as $data): $id=1; ?> 

<input type="hidden" name="product<?php echo $id; ?>" value="<?php echo $data['product_name']; ?>" /> 
<input type="hidden" name="amount<?php echo $id; ?>" value="<?php echo $data['product_qty']; ?>" /> 
<input type="hidden" name="qty<?php echo $id; ?>" value="<?php echo $data['product_price']; ?>" /> 

<?php $id++; endforeach; ?> 

Salutations!

Ajouter complet Code

$allData = array(
    array( 
    "product_name"=> "Test Product", 
    "product_qty"=>"2.0000", 
    "product_price"=>"15.0000", 
), 
    array(
    "product_name"=>"Test 2", 
    "product_qty"=>"3.0000", 
    "product_price"=>"25.0000", 
), 
); 
?> 

<?php foreach ($allData as $data): $id=1; ?> 

<input type="text" name="product<?php echo $id; ?>" value="<?php echo $data['product_name']; ?>" /> 
<input type="text" name="amount<?php echo $id; ?>" value="<?php echo $data['product_qty']; ?>" /> 
<input type="text" name="qty<?php echo $id; ?>" value="<?php echo $data['product_price']; ?>" /> 

<?php $id++; endforeach; ?> 
Questions connexes