在php中处理数组

Posted

技术标签:

【中文标题】在php中处理数组【英文标题】:Processing array in php 【发布时间】:2012-09-23 10:54:53 【问题描述】:

我得到了这个 2 数组的形式来处理。但是,我只能设法从其中一个数组中获取输出。示例如下:

<inputs id="location" type="text" name="data[]" value=""/> <input id="shipval" type="text" name="data[][id]" value=""/>

php部分如下:

foreach ($_POST ["data"] as $id => $subs)        

            foreach ($subs as $key=>$sub) 

                $subcategory = $sub;

                if($subs['id']=="$subcategory")
                    echo $sql = " insert into x(kodLebuhraya,kodSeksyen) values ('".$subs['id']."','".$sub."')";echo "<br>";    
                else
                    //echo "hi2";
                    echo $sql = " insert into x(kodLebuhraya,kodSeksyen) values ('".$subs['id']."','".$sub."')";echo "<br>";
                

               

        

这意味着一艘船的一个位置。我有多个位置和船舶输入字段。各位大佬能指点一下哪一个是错的。提前致谢。

【问题讨论】:

这真的很奇怪你在这里尝试做的是...... data[] 是输入位置情况下的简单字符串,而 data[] 是 shipval 情况下的数组......显示一个元素如何同时是数组和字符串..更改您的输入名称方法 你知道我能做到吗?我不知道要解决这个问题.. 【参考方案1】:

所以基本上你需要成对传递 location 和 shipval。

html 中试试这个结构:

<label>Set One</label>
<input class="location" type="text" name="data[location][]" value=""/>
<input class="shipval" type="text" name="data[shipval][]" value=""/>
<label>Set Two</label>
<input class="location" type="text" name="data[location][]" value=""/>
<input class="shipval" type="text" name="data[shipval][]" value=""/>
<label>Set Three</label>
<input class="location" type="text" name="data[location][]" value=""/>
<input class="shipval" type="text" name="data[shipval][]" value=""/>

PHP 代码如下:

  foreach ($_POST['data']['location'] as $key => $location)        
        $shipVal = $_POST['data']['shipval'][$key];

        //now you have a pair of $location and $shipVal
        echo $location.' : '.$shipVal.'<hr>';

    

避免在未命名的索引之后使用命名索引。 &lt;input name="array[][named]" /&gt; 如果一对字段中的一个为空,您可能会丢失字段顺序。

【讨论】:

我试过你的代码。并将表单的 更改为输入。但我没有得到任何输出。已经尝试回显位置和船舶。有什么想法吗? 更正了 $_POST 数组中的语法。 @muhamad-azam 如果您要使用这样的多个输入,则不应使用 id="location" 或 id="shipval" 因为它们必须是唯一的,因此您可能希望使用类属性。 好的,谢谢!我现在开始工作了。非常感谢那些在这方面帮助我的人。【参考方案2】:

你有&lt;inputs id="location"而不是&lt;input id="location"

另外...foreach ($subs as $key =&gt; $sub) 将为&lt;inputs id="location" type="text" name="data[]" value=""/&gt; 抛出错误,因为它不是多维的。所以试着把它改成&lt;inputs id="location" type="text" name="data[][]" value=""/&gt;

【讨论】:

如果这是复制/粘贴代码:很好,这无疑是问题所在。 +1 可能值得注意的是,它实际上会引发警告 - 如果没有显示警告,可能就是它没有被注意到的原因。【参考方案3】:

对于多选,名称必须以方括号结尾,因此您需要更改 shipval 输入的名称

【讨论】:

【参考方案4】:

首先你写的是inputs而不是input

其次,这一行:

foreach ($subs as $key=&gt;$sub)

将每个变量视为一个数组,但位置不是数组。

【讨论】:

我没听懂..“将每个变量视为数组,但位置不是数组”是什么意思。有什么解决办法吗?【参考方案5】:

我认为不需要循环,因为您只想访问 $_POST['data'][0]$_POST['data'][1]['id']

我也注意到你的SQL是重复的所以你可以试试你可以试试

$sql = "INSERT INTO  x(`kodLebuhraya`,`kodSeksyen`) VALUES ('%s','%s')" ;
printf($sql,mysqli_real_escape_string($_POST['data'][0]),mysqli_real_escape_string($_POST['data'][1]['id']));

输出

INSERT INTO x(`kodLebuhraya`,`kodSeksyen`) VALUES ('A','B')

使用形式

<form method="POST">
    A : <input id="location" type="text" name="data[]" value="" /> 
    B : <input id="shipval" type="text" name="data[][id]" value="" /> 
    <input  id="shipval" type="submit" name="submit" value="Submit" />
</form>

【讨论】:

首先主要问题在于输入字段名称,他不会得到任何 id 原因::: 假设场景他的位置就像来自位置的 data[0] = 'london' 然后假设 id 应该是 5然后 data[0][id] = 5... 看看这个 data[0] 怎么可以同时是字符串值和关联数组 @Surace 这只是基本问题,但已经用我使用的表格更新了我的答案 嗨,基本上我有多个位置和船舶输入。这将是一对。指一个船坞的一个位置。如果我有 4 个输入位置用于位置和船运怎么办?代码将是什么?

以上是关于在php中处理数组的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch-PHP 处理JSON数组和对象

PHP系列PHP字符串处理

用 php 和 mongo 处理巨大的数组

PHP 数组处理

在Perl CGI中处理HTML表单中的PHP样式数组(方括号)

php返回数组后处理(开户成功后弹窗提示)