我已经在$_POST数组中输入了我需要的所有数据。
如果我print_r
数组,我看到这样的东西:
Array (
[0_45_115] => 01
[0_46_115] => 01
[0_47_115] => 01
[0_48_115] => 01
[0_49_115] => 01
[0_50_115] => 01
[0_51_115] => 01
[0_52_115] => 01
[0_53_115] => 01
[0_54_115] => 01
[0_55_115] => 01
[0_56_115] => 01
[0_57_115] => 01
[0_58_115] => 01
[0_59_115] => 01
[0_60_115] => 01
[0_61_115] => 01
[0_62_115] => 01
[0_63_115] => 01
[0_64_115] => 01
[0_65_115] => 01
[0_66_115] => 01
[0_67_115] => 01
)
索引i帖子从表单(name attr
)没有下划线。例如:
<input type="text" name="0 45 115" value="" />
让我们忘记这个。
0_45_115
索引将为我提供所有必要的数据,我想更新或插入一个新的行到我的数据库。这个值会显示我想要的信息。
问题是我不知道如何管理数组。也许我必须使用foreach
方法,然后我将使用split
函数拆分每一行的索引。然后我将做所有其他的东西插入/更新我的数据库。
我问我如何使用foreach
从$_POST
数组获取信息(索引数据)。
根据PHP规范将空格转换为下划线。更多细节请参阅此页。具体来说,在页面中搜索该字符串:变量名中的点和空格将被转换为下划线。
我认为正确的方法是
foreach($_POST as $key => $value)
{
$parts = explode('_', $key); //split your $key
//then deal with corresponding $value
}
foreach( $yourArray as $k => $v ) {
$keys = explode( "_", $k) // for first iterate you will get array('0','45','115')
}
参见array_keys()函数
它将返回输入数组的所有键,然后您可以使用split()函数处理键并获得所需的数据。
$keys = array_keys($yourArray);
foreach($keys as $k) {
$data = split("_", $k);
print $data[0];
print $data[1];
print $data[2];
}
作为循环的替代方法,您可以使用array_map
:
array_map(function ($str) {return explode('_', $str);},
array_keys($_POST));
结果:array (
array (
0 => '0',
1 => '45',
2 => '115',
),
array (
0 => '0',
1 => '46',
2 => '115',
),
array (
0 => '0',
1 => '47',
2 => '115',
),
...
由于只有PHP 5.3和更新版本在语言级别上有匿名函数,如果需要支持较早的PHP版本,循环是更好的选择。否则,您必须使用create_function
,这只是丑陋。