我正在按照 nettut+ 教程进行分页并将 POST 输入作为查询字符串存储在数据库中。到目前为止,一切正常,直到假设我得到一个数组作为 POST 输入,我无法循环它并获取所有数组值并存储到 query_array 中(即,在数组中存储数组)。
以下片段:
$query_array = array(
'gender' => $this->input->post('gender'),
'minage' => $this->input->post('minage'),
'maxage' => $this->input->post('maxage'),
'Citizenship' => $this->input->post('citizenship'), // checkboxes with name citizenship[]
);
这仅返回公民身份中最后存储的数组值。
输出数组:
Array ( [gender] => 1 [minage] => 18 [maxage] => 24 [Citizenship] => 2 )
使查询字符串为:
&gender=1&minage=18&maxage=24&Citizenship=2
但是,我的要求是获取“公民身份”数组的所有值而不是最后存储的值。
制作查询字符串所需的输出:
Array ( [gender] => 1 [minage] => 18 [maxage] => 24 [Citizenship] => 2 [Citizenship] => 4 [Citizenship] => 6 )
查询字符串:
&gender=1&minage=18&maxage=24&Citizenship[]=2&Citizenship[]=4&Citizenship[]=6
代码点火器看起来并不支持未命名的多维数组作为输入,而无需进行任何黑客攻击。
如果您可以访问原始 $_POST 数据,请尝试替换
$this->input->post('citizenship')
与
array_map('intval',$_POST['citizenship'])
或者将密钥添加到您的帖子数据中:
&gender=1&minage=18&maxage=24&Citizenship[0]=2&Citizenship[1]=4&Citizenship[2]=6
我自己修好了。我只是循环遍历 POST 数组并获取单独的数组键和对值。
foreach($_POST['Citizenship'] as $k => $v) {
$Citizenship[$v] = $v;
}
希望这可以帮助面临类似问题的人。