PHP将变量的值拆分为多个变量

时间:2016-06-01 03:37:41

标签: php mysql


我有一个来自mysql的值,我希望将其拆分为表单中的多个输入字段。

// 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; ?>" />
  

现在,有一个条件。

$value可以为空,也可能不足以分成4个部分,这意味着它可以$value = "10 - Coles, 15 - Aldi";能够容纳$amt_1, $desc_1和{{1} }}。或任何一组1,2,3或4个分裂。

3 个答案:

答案 0 :(得分:1)

如果你想要4对,这是我的方法:

$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" />';
  }
}

但对我来说更合适的做法是:

$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].'" />';
}

答案 1 :(得分:0)

foreach循环内的有效内容中使用explode:

// 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}' />";
  }
}

答案 2 :(得分:0)

使用以下代码

<?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>';
}
 ?>