我有一个表单,它将状态和 id 作为数组提交给update.php。以下是提交表单输入和发送的URL
<? echo"<input type='hidden' name='status[]' value='$status' />"; ?>
<? echo"<input type='hidden' name='id[]' value='$id' />"; ?>
update_pnr.php?status%5B%5D=0&id%5B%5D=4&status%5B%5D=0&id%5B%5D=5
应该更新传入信息的PHP是:
$newarr = array_combine($_GET['status'],$_GET['id']);
foreach($newarr as $index => $value){
echo 'index: ' . $index . 'Value: ' . $value . '<br>';
}
我在期待:
0 Value: 4
0 Value: 5
但第一行被忽略,我只收到最后一行。那是为什么?
答案 0 :(得分:2)
至于文档array_combine
使用keys数组中的值作为键创建数组,将values数组中的值作为相应的值。
http://php.net/manual/en/function.array-combine.php
第一个参数数组的值用作键,第二个参数数组的值用作值
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
print_r($c);
输出:
Array
(
[green] => avocado
[red] => apple
[yellow] => banana
)
您的方案是:
您的数组$_GET['status']
:
Array(
[0] => 0
[1] => 0
)
数组$_GET['id']
:
Array
(
[0] => 4
[1] => 5
)
结合后变为:
Array
(
[0] => 5
)
因为数组状态具有两次相同的值,这是组合数组的键。由于key是唯一的,因此用最后一个值覆盖:
$newarr[0] => 4
然后$newarr[0] => 5
$newarr[0] => 4
覆盖
$newarr[0] => 5
和$newarr
只有一个键和值。
答案 1 :(得分:1)
可能的解决方法:
foreach($_GET['status'] as $key => $val)
echo $val . 'Value: ' . $_GET['id'][$key];