在数组中添加一个键甚至值为空PHP

时间:2012-06-28 21:00:22

标签: php arrays

我有一个表单,其中可以输入几行相同的几行,如下所示,

<input type="text" name="company[]"><input type="text" name="type[]">
<input type="text" name="company[]"><input type="text" name="type[]">
<input type="text" name="company[]"><input type="text" name="type[]">

现在我必须将这些字段输入到数据库中,因此我循环输入字段并且工作正常。

但我有一个问题:有时循环中的字段可能为空。即公司将拥有一个价值但不是类型。那么我怎样才能使循环在类似的键中输出空值:

Array(
   company => array(
          [0] => string0
          [1] => string1
          [2] => string2
     )
   type => array(
          [0] => 
          [1] => string1
          [2] => string2
     )
)

所以你可以看到第一个类型的键是空的,所以我怎么能实现呢,

我正在尝试这样做,但没有结果,

$postFields = array('company', 'type');
$postArray = array();
foreach($postFields as $postVal){
    if($postVal == ''){
        $postArray[$postVal] = '';
    }
    else {
        $postArray[$postVal] = $_POST[$postVal];
    }
}

感谢任何帮助,

1 个答案:

答案 0 :(得分:2)

此HTML:

<input type="text" name="company[]"><input type="text" name="type[]">

将动态填充数组的键。我想你永远不会得到一个空的0元素,只要提交了一个文本字段。相反,您最终会得到不匹配的数组长度,您将无法确定哪个数字被省略。

解决方案是在HTML中明确说明密钥,如下所示:

<input type="text" name="company[0]"><input type="text" name="type[0]">
<input type="text" name="company[1]"><input type="text" name="type[1]">
<input type="text" name="company[2]"><input type="text" name="type[2]">

现在,您可以循环遍历数组,如果未设置某个键,则可以将其设置为空字符串:

foreach( range( 0, 2) as $i) {
    if( !isset( $_POST['company'][$i]))
        $_POST['company'][$i] = "";

    if( !isset( $_POST['type'][$i]))
        $_POST['type'][$i] = "";
}