2012-06-10 2 views
-1

У меня есть HTML-форма, содержащая 20 наборов полей. Вот 2 для примера:Настроить форматирование строк PHP

<input type="text" class="auto-clear" id="p1weight" name="p1weight" value="" />  
<input type="text" class="auto-clear" id="p1length" name="p1length" value="" />  
<input type="text" class="auto-clear" id="p1width" name="p1width" value="" />  
<input type="text" class="auto-clear" id="p1height" name="p1height" value="" />  

<input type="text" class="auto-clear" id="p2weight" name="p2weight" value="" />  
<input type="text" class="auto-clear" id="p2length" name="p2length" value="" />  
<input type="text" class="auto-clear" id="p2width" name="p2width" value="" />  
<input type="text" class="auto-clear" id="p2height" name="p2height" value="" /> 

Я использую следующий PHP код для генерации строки ($ все) для хранения значений полей:

foreach(range(1, 20) as $i) 
    { 
     // Create an array that stores all of the values for the current number 
     $values = array( 
      'p' . $i . 'weight' => $_POST['p' . $i . 'weight'], 
      'p' . $i . 'length' => $_POST['p' . $i . 'length'], 
      'p' . $i . 'width' => $_POST['p' . $i . 'width'], 
      'p' . $i . 'height' => $_POST['p' . $i . 'height'] 
     ); 

     $all .= implode('|', $values) . "\n\n"; 
    } 

Если мой вход для 2 наборы полей - 1, 2, 3 & 4, это дает мне $ все значение как: 1|2|3|4 1|2|3|4.

Однако, я хотел бы настроить это больше. В конце концов, я хотел бы мои $ все быть:

Item1: Weight (kg):1 Length (cm): 2 Width (cm): 3 Height (cm): 4 
Item2: Weight (kg):1 Length (cm): 2 Width (cm): 3 Height (cm): 4 

Как обновить мой PHP выше, чтобы достичь этого?

Большое спасибо за любые указатели.

+0

Учебник «слишком локализован». Голосование закрывается. –

+0

Предлагаю заглянуть в html-шаблоны. Есть способы, возможно, сделать это в PHP, но это будет скорее головная боль, чем это стоит. В вашем случае самым легким подходом будет цикл foeach и просто сопоставление типов значений со значением, используя счетчик, чтобы указать элемент # – Anthony

ответ

0
foreach(range(1, 20) as $i) 
     { 

      $all .= "Item".$i.": Weight (kg):".$_POST['p' . $i . 'weight']." Length (cm): ".$_POST['p' . $i . 'length']." Width (cm): ".$_POST['p' . $i . 'width']." Height (cm): ".$_POST['p' . $i . 'height']."\n"; 
     } 
+1

Абсолютно совершенный, Waseem !!! Большое большое спасибо. Хорошего дня! – michaelmcgurk

+1

, пожалуйста, не кормите [помочь вампирам] (http://www.slash7.com/pages/vampires) –

+1

Отличный ответ! Нет описания того, что было сделано, никакой информации о том, что было изменено или улучшено, или почему. Если бы все ответы были такими, мы не узнали бы ничего и не полюбили бы его. ': s' –

1

Вы код выше уже очень хорошо, чтобы нормализовать представленные данные в массиве. Чтобы теперь отобразить значения из массива, вы можете использовать функцию с именем vsprintf. Он принимает два аргумента. Первый из них является строкой форматирования можно добавить заполнители в том, что пометить форматирование значения (например %d для отображения в виде целого числа (D = цифра)), а второй аргумент представляет собой массив, который содержит следующие значения:

$format = "Item$i: Weight (kg): %d length (cm): %d Width (cm): %d Height (cm): %d \n\n"; 
$all .= vsprintf($format, $values); 

Преимущество этого метода заключается в том, что вы выделили извлечение и форматирование значений. Затем вы можете перемещать эти две части дальше друг от друга в будущем, например. несколько типов вывода.

Кроме того, это сохраняет то, что вы уже написали, что стало большим шагом вперед в нормализации представленных данных.

Смежные вопросы