在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>';
避免在未命名的索引之后使用命名索引。 <input name="array[][named]" />
如果一对字段中的一个为空,您可能会丢失字段顺序。
【讨论】:
我试过你的代码。并将表单的$_POST
数组中的语法。 @muhamad-azam 如果您要使用这样的多个输入,则不应使用 id="location" 或 id="shipval" 因为它们必须是唯一的,因此您可能希望使用类属性。
好的,谢谢!我现在开始工作了。非常感谢那些在这方面帮助我的人。【参考方案2】:
你有<inputs id="location"
而不是<input id="location"
另外...foreach ($subs as $key => $sub)
将为<inputs id="location" type="text" name="data[]" value=""/>
抛出错误,因为它不是多维的。所以试着把它改成<inputs id="location" type="text" name="data[][]" value=""/>
【讨论】:
如果这是复制/粘贴代码:很好,这无疑是问题所在。 +1 可能值得注意的是,它实际上会引发警告 - 如果没有显示警告,可能就是它没有被注意到的原因。【参考方案3】:对于多选,名称必须以方括号结尾,因此您需要更改 shipval
输入的名称
【讨论】:
【参考方案4】:首先你写的是inputs
而不是input
。
其次,这一行:
foreach ($subs as $key=>$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中处理数组的主要内容,如果未能解决你的问题,请参考以下文章