Проверьте, пуст ли массив POST

Я проверяю массивы $ _POST, но не могу найти способ проверить, является ли массив пустым. Кто-нибудь знает, как я могу это проверить. я пытался !empty() а также isset(), но оба способа вернули истину.

Моя HTML-форма с полем выбора, текстовым полем и кнопкой отправки:

<form method="post">
<select name="product_name[]">
<option value="Camera">Camera</option>
<option value="Radio">Radio</option>
<option value="Television">Television</option>
</select>
<input name="product_price[]" />

<input type="submit" name="submit">
</form>

Мой PHP:

if( ! empty( $_POST['product_name'] ) && ! empty( $_POST['product_price'] ) ) {

print_r( $_POST['product_name'] );
print_r( $_POST['product_price'] );
}

Вернуть:

Array ( [0] => Camera )
Array ( [0] => )

1

Решение

Это массив, поэтому вам нужно использовать array_filter избавиться от пустых строк.

if(!empty($_POST['product_name']) && array_filter($_POST['product_price'])){
print_r( $_POST['product_name']);
print_r( $_POST['product_price']);
}

Проверьте здесь.

2

Другие решения

Может быть, вы должны просто добавить первый вариант по умолчанию в виде пустой строки? И не называйте входные данные как product_name[], Измените это на product_name,

<form method="post">
<select name="product_name">
<option value="">-</option>
<option value="Camera">Camera</option>
<option value="Radio">Radio</option>
<option value="Television">Television</option>
</select>
<input name="product_price" type="text" />

<input type="submit" name="submit">
</form>

Если будет выбран первый вариант, empty() функция должна вернуться TRUE,

1

Вы объявили имя_продукта [] (следовательно, пустой массив вернет TRUE если выбран вариант 1) вам придется изменить его на product_name

<form method="post">
<select name="product_name">
<option value="">-</option>
<option value="Camera">Camera</option>
<option value="Radio">Radio</option>
<option value="Television">Television</option>
</select>
<input name="product_price" />

<input type="submit" name="submit">
</form>
0

Хорошо, я нашел решение. Предыдущий ответ был неверным, надеюсь, это поможет вам:

<form method="post">
<select name="product_name[]">
<option value="Camera">Camera</option>
<option value="Radio">Radio</option>
<option value="Television">Television</option>
</select>
<input name="product_price[]" />

<input type="submit" name="submit">
</form>

<?php

if( !empty( $_POST['product_name'] ) && !count( array_filter($_POST['product_price'])) ==0 ) {

print_r( $_POST['product_name'] );
print_r( $_POST['product_price'] );
}
?>
-2