我正在检查 $_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] => )
它是一个数组,因此您需要使用 array_filter
来摆脱空字符串。
if(!empty($_POST['product_name']) && array_filter($_POST['product_price'])){
print_r( $_POST['product_name']);
print_r( $_POST['product_price']);
}
查看此处。
也许您应该将默认的第一个选项添加为空字符串?并且不要命名像 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
。
您已声明 product_name[](因此如果选择选项 1,数组空将返回TRUE
),您必须将其更改为 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>
好的,我找到了解决方案。以前的答案是错误的,希望这对您有所帮助:
<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'] );
}
?>