#php #arrays
#php #массивы
Вопрос:
Я хочу, чтобы поле значения txtname
было пустым echo It is ok
, но это не работает в моем коде (если поле было пустым и нажмите на кнопку, с помощью которой вы видите вывод print_r(...)
), пожалуйста, посмотрите мою демонстрацию и мой код. что мне делать?
Демонстрация: http://codepad.viper-7.com/FNWcIs
<form method="post">
<input name="txtname[]">
<button>Click Me</button>
</form>
<?php
if ($_POST) {
$txtname = $_POST['txtname'];
if (!empty($txtname)) {
echo '<pre>';
print_r($txtname); // Output this is: Array ( [0] => )
} else {
echo 'it is ok';
}
}
?>
Комментарии:
1. попробуйте
var_dump($_POST)
что вы там получите?2. @ Truth — Смотрите здесь: codepad.viper-7.com/UXe1ZC и нажмите на кнопку
Click Me
Ответ №1:
$txtname
or ( $_POST['txtname']
) — это массив с одним элементом. Даже если этот элемент пуст, empty()
возвращает TRUE
значение для любого массива, содержащего один или более элементов.
Это должно объяснить поведение вашего кода.
Чтобы достичь того, что вы ищете, измените HTML:
От:
<input name="txtname[]">
Для:
<input name="txtname">
Если вы не используете скобки, это будет строка. И empty
вернет FALSE
, если он пуст. Смотрите Переменные из внешних источников в руководстве по PHP.
Ответ №2:
измените имя поля ввода на txtname, как показано ниже.
<input name="txtname">
Или, если вы хотите использовать массив текстовых полей, попробуйте приведенный ниже код.
<form method="post">
<input name="txtname[]">
<input name="txtname[]">
<input name="txtname[]">
<button>Click Me</button>
</form>
<?php
if($_POST){
$txtname = $_POST['txtname'];
foreach($txtname as $key=>$value)
{
if(!empty($value)){
echo '<br>'.$value; // Output this is: Array ( [0] => )
}else{
echo '<br>it is ok';
}
}
}
?>
Ответ №3:
Вы можете попробовать это так, это работает, если вы не собираетесь передавать одно значение переменной $txtname
`
$txtname = $_POST['txtname'];
if($txtname[0]){
echo '<pre>';
print_r($txtname); // Output this is: Array ( [0] => )
}else{
echo 'it is ok';
}
}
?>`