Php 检查POST数组是否为空

Php 检查POST数组是否为空,php,arrays,post,conditional,Php,Arrays,Post,Conditional,我正在检查$\u POST数组,但找不到检查数组是否为空的方法。有人知道我怎么检查这个吗。我试过!empty()和isset(),但两种方式都返回true 带有选择框、文本字段和提交按钮的我的HTML表单: <form method="post"> <select name="product_name[]"> <option value="Camera">Camera</option> <option valu

我正在检查$\u POST数组,但找不到检查数组是否为空的方法。有人知道我怎么检查这个吗。我试过
!empty()
isset()
,但两种方式都返回true

带有选择框、文本字段和提交按钮的我的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> 
if( ! empty( $_POST['product_name'] ) && ! empty( $_POST['product_price'] ) ) {

    print_r( $_POST['product_name'] );
    print_r( $_POST['product_price'] );
}
Array ( [0] => Camera ) 
Array ( [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> 
if( ! empty( $_POST['product_name'] ) && ! empty( $_POST['product_price'] ) ) {

    print_r( $_POST['product_name'] );
    print_r( $_POST['product_price'] );
}
Array ( [0] => Camera ) 
Array ( [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'] );
}
?>

摄像机
无线电
电视机

也许您应该将默认的第一个选项添加为空字符串?不要给输入命名,比如
product\u 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>

-
摄像机
无线电
电视机

如果选择第一个选项,函数应该返回
TRUE

它是一个数组,所以您需要使用
array\u filter
来去除空字符串

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

您已声明产品名称[](因此,如果选择选项1,数组为空将返回
TRUE
),您必须将其更改为产品名称

<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> 

-
摄像机
无线电
电视机

如果您发布一个空值,它将计为数组值可能的重复项:尝试
sizeof($array)>0
确定数组值是否大于0是否需要在输入名称后添加
[]
?@如果数组为“空”,则不需要添加技能,即
array()
@Robbert请检查并告诉我它是否正确,并解决您的问题。任何人如果不同意,请先检查代码,然后再投票反对。因为我已经运行了此代码,它正在工作。如果您将select from
product\u name[]
的语句更改为
product\u name
,它将不再返回数组,并且对于所需的
input
类型
text
作为数组?而且。。。如果需要选择多个值,只需添加多个属性()。请不要使用空的(数组过滤器()),只需添加数组过滤器即可。事实上,您的代码在PHP<5.5时抛出错误。@deceze-是的,这很有意义。谢谢