首页 > 解决方案 > PHP处理张贴数组

问题描述

所以我在我的 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在条件 where $valueis an array 中回显时,我得到“数组到字符串转换”的通知,它回显出单词“array”。正如预期的那样。但是当我尝试$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检查)。

标签: phparrayspost

解决方案


对您的代码进行以下更改

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

推荐阅读