2012-09-21 1 views
1

Я пытаюсь создать массив для хранения чисел и их добавления.PHP, создающий массив из полей ввода формы

<input type="number" name="numbers[]"/> 

Я получаю неопределенную переменную на следующей строке

foreach($numbers as $number) 

Я уверен, что это, вероятно, что-то основное, но я относительно новым для PHP и помощь будет высоко оценена.

+4

Возможно, какой-то код? –

ответ

1

Если вы хотите, чтобы получить сумму массив вам не нужно цикла вы можете использовать array_sum

Пример

<?php 
if (isset($_POST['numbers'])) { 
    echo array_sum($_POST['numbers']); 
} 

?> 

<form method="POST"> 
<input type="number" name="numbers[]"/> 
<input type="number" name="numbers[]"/> 
<input type="number" name="numbers[]"/> 
<input type="number" name="numbers[]"/> 
<input type="submit" value="add"/> 
</form> 
+0

может ли сказать, какое именно имя будет передано, чтобы проверить, действительно ли поле заполнено или пусто. – Lonergan6275

+0

Он будет выглядеть следующим образом: '$ _POST ['numbers'] [0]' '$ _POST ['numbers'] [1]' и т. Д. Если у вас все еще есть проблемы, сообщите мне, чтобы я мог обновить ответ примерами – Baba

+0

спасибо, я должен быть в состоянии закончить его там – Lonergan6275

0

Добавьте еще какой-нибудь код, но это в основном означает, что $ numbers еще не объявлены в этой точке кода.

Добавьте эту строку перед:

$numbers = array(); 

Теперь оно не должно дать вам эту ошибку.

Итак, вопрос в том, где должны быть установлены $ numbers? Для этого нам нужна дополнительная информация и код.

2

Если вы выложили input S вы показываете с одной страницы на другую, и вам нужно запустить через список, вы должны настроить его так:

if (isset($_REQUEST['numbers']) && is_array($_REQUEST['numbers'])) { 
    $numbers = $_REQUEST['numbers']; 

    foreach ($numbers as $number) { 
    print $number; 
    } 
} 
+1

Mayb добавить isset ($ _ REQUEST ['numbers']) к этому ... – qrazi

+0

@qrazi хороший вызов – thewebguy

0

Я не PHP эксперт, но если я вас правильно понимаю, и вы пытаясь поместить переменную в массив, вам нужно будет сказать, какую часть массива я бы предположил. Я почти уверен, что $array[i] и $array не совпадают, и если вы попытаетесь что-то поместить в $array, он сможет удерживать только одну вещь за раз. Если вы просто собираете кучу чисел, которые кто-то входит в форму, вы можете сделать что-то подобное.

//For the form 
<form action="formHandler.php" method="post"> 
    <input type="text" name="number1"> 
    <input type="text" name="number2"> 
    //continue in this manner for as many numbers as you need to gather. 
</form> 

//for the PHP side of it. 
<?php 
    $x=1; 
    $numbersArray = array(); 
    for($i=0; $i<10; $i++){ 
    $numbersArray[$i] = $_POST['number'.$x]; 
    $x++; 
    } 
//to add them up 
$total=array_sum($numbersArray); 
?> 

Я надеюсь, что это правильно, и я надеюсь, что это поможет.

+0

PHP имеет более сжатые способы сделать это. См. Другие ответы для примеров. Кроме того, если у вас на самом деле есть 10 чисел в вашем массиве, вам нужно либо начать цикл с 0 (предпочтительнее, imo, потому что вам не нужно вычитать 1 для индекса массива), либо изменить свой тест на $ i <= 10 (и это должно быть $ i, а не только i); В этом случае цикл for действительно лучше, чем цикл while. – GreenMatt

+0

Я пытался быстро его пометить, так что это было не до табака. Я согласен на этот бит о циклах и о i, но, как я уже сказал, я не эксперт, и я забыл правильный синтаксис цикла, поэтому я просто работал с циклами while. Я не знал, что такое массив_sum, это довольно круто. – ChapmIndustries

+0

Вы должны иметь возможность редактировать свой ответ. – GreenMatt

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