PHP处理发布的数组

时间:2018-08-01 17:35:55

标签: php arrays post

所以我的html中有一些输入格式如下

<input name="First_Corp[FirstName]" />
<input name="First_Corp[LastName]" />
<input name="Second_Corp[FirstName]" />
<input name="Second_Corp[LastName]" />

这些已按预期发布到php处理页面。因此$_POST["First_Corp"]["FirstName"]给出正确输入的值。我将它们按数组分组,以便可以对它们进行格式化和正确分组以形成收据(这远远超过了4个输入)。

当我遍历$_POST(使用foreach($_POST as $key=>$value))时,我有一个条件检查该值是否为数组,这很好用。如果该值不是数组,则将这些值打印到收据上。如果是数组,则应独立遍历该数组,以将这些输入一起添加到收据中。

但是,当我得到数组值时,我正在使用检查以确保至少设置了一个值(某些值是自动设置的,并且我不想添加仅具有自动设置的输入)。

当我在$value是一个数组的条件下回显$value时,我收到“数组到字符串转换”的通知,并且它回显了“数组”一词。正如预期的那样。但是,当我尝试将$value用作数组,即$value["FirstName"]时,会收到非法的字符串偏移量错误。我相信这意味着我将字符串视为数组吗?

因此,我现在在条件语句之前回显该值,并在条件if(is_array($value)中添加了一个检查......... 回声会打印出“数组”,告诉我该值实际上是一个数组。但是,条件语句再也不会运行,告诉我$ value不是数组。有人知道为什么会这样吗?我有以下代码:

echo $value;
if (is_array($value) and $value['FirstName'] !== ""){

给出输出:

  

注意:未初始化的字符串偏移量:第90行的... / test2.php中的0
  注意:第89行的... / test2.php中的数组到字符串的转换
  数组

(第89行是echo $value行;第90行是有条件的)

此外,我知道'FirstName'元素在所有与POST一起提交的数组中,因此它不会是无效的索引问题。我正在提交名字,所以他们不是空的。因此,条件条件应该每次都运行(直到我添加is_array检查之前它一直在运行)。

1 个答案:

答案 0 :(得分:0)

对代码进行以下更改

if(is_array($value) && $value['FirstName']!='')
{
    echo $value['FirstName'];
}