2016-06-01 19 views
1


Ich habe einen Wert von mysql, die ich in mehrere Eingabefelder in einem Formular aufteilen möchte.PHP teilt den Wert einer Variablen in mehrere Variablen


// This is the value from mysql... 
$value = "10 - Coles, 15 - Aldi, 5 - Target, 7.77 - Kmart"; 

// This is how I want to split it.... 
$amt_1 = "10"; 
$desc_1 = "Coles"; 
$amt_2 = "15"; 
$desc_2 = "Aldi"; 
$amt_3 = "5"; 
$desc_3 = "Target"; 
$amt_4 = "7.77"; 
$desc_4 = "Kmart"; 


//So that it can be displayed in input boxes... 
<input type="text" value="<?php echo $amt_1; ?>" /> 
<input type="text" value="<?php echo $desc_1; ?>" /> 

<input type="text" value="<?php echo $amt_2; ?>" /> 
<input type="text" value="<?php echo $desc_2; ?>" /> 

<input type="text" value="<?php echo $amt_3; ?>" /> 
<input type="text" value="<?php echo $desc_3; ?>" /> 

<input type="text" value="<?php echo $amt_4; ?>" /> 
<input type="text" value="<?php echo $desc_4; ?>" /> 

Jetzt gibt es eine Bedingung.

Die $value leer sein kann, oder es kann in $amt_1, $desc_1 und $amt_2, $desc_2 nicht genug, um in 4 Teile geteilt, so bedeutet dies $value = "10 - Coles, 15 - Aldi"; der Lage sein, sein kann, passen. oder jede Menge von 1, 2, 3 oder 4 Splits.

+0

Lassen Sie mich wissen, ob meine Antwort für Sie arbeitete. Es ist ziemlich sauber und kümmert sich auch um die Situation, wenn '$ value' leer ist – Webeng

Antwort

1

Hier ist mein Ansatz, wenn Sie genau 4 Paare wollen:

$value = "10 - Coles, 15 - Aldi, 5 - Target, 7.77 - Kmart"; 

$valArr = explode(', ', $value); 

for ($i=0; $i<4; $i++) { 
    if(isset($valArr[$i])) { 
    $currentVal = explode(' - ',$valArr[$i]); 
    echo '<input type="text" name="amt_'.($i+1).'" value="'.$currentVal[0].'" />'; 
    echo '<input type="text" name="desc_'.($i+1).'" value="'.$currentVal[1].'" />'; 
    } else { 
    echo '<input type="text" name="amt_'.($i+1).'" value="NO VALUE" />'; 
    echo '<input type="text" name="desc_'.($i+1).'" value="NO VALUE" />'; 
    } 
} 

Aber mir mehr richtige Ansatz ist:

$value = "10 - Coles, 15 - Aldi, 5 - Target, 7.77 - Kmart"; 

$valArr = explode(', ', $value); 

foreach ($valArr as $pair) { 
    $currentVal = explode(' - ',$pair); 
    echo '<input type="text" name="amt_'.($i+1).'" value="'.$currentVal[0].'" />'; 
    echo '<input type="text" name="desc_'.($i+1).'" value="'.$currentVal[1].'" />'; 
} 
0

die Verwendung in einer effizienten Angelegenheit innerhalb einer foreach Schleife explodieren:

// This is the value from mysql... 
$value = "10 - Coles, 15 - Aldi, 5 - Target, 7.77 - Kmart"; 

$myArray = explode(",", $value);//separating the parts 

foreach ($myArray as $data) 
{ 
    $buffer = explode("-", $data); 
    $first = trim($buffer[0]); 
    $second = trim($buffer[1]); 
    if ($first != "") 
    { 
    echo "<input type='text' value='{$first}' />"; 
    echo "<input type='text' value='{$second}' />"; 
    } 
} 
0

Folgenden Code verwenden

<?php 
$value = "10 - Coles, 15 - Aldi, 5 - Target, 7.77 - Kmart"; 

$arrayValue = explode(', ', $value); 
$i=0; 
foreach ($arrayValue as $new) { 
    $i++; 
    $exactValue = explode(' - ',$new); 
    echo '<input type="text" name="amt_'.($i).'" value="'.$exactValue[0].'" />'; 
    echo '<input type="text" name="desc_'.($i).'" value="'.$exactValue[1].'" /><br>'; 
} 
?>