如何在多维数组(PHP)中添加$\u POST值?
我知道可能有来源,但我已经尝试了一切,我仍然没有得到正确的解决方案。这就是我请求你帮忙的原因 我有一个$\u POST数组,我想将值放入数组中。以下是我想要的最终结果:如何在多维数组(PHP)中添加$\u POST值?,php,arrays,post,Php,Arrays,Post,我知道可能有来源,但我已经尝试了一切,我仍然没有得到正确的解决方案。这就是我请求你帮忙的原因 我有一个$\u POST数组,我想将值放入数组中。以下是我想要的最终结果: $response = [ ['category' => 2, 'value' => "june"], ['category' => 5, 'value' => "may"], ['category' => 8, 'val
$response = [
['category' => 2, 'value' => "june"],
['category' => 5, 'value' => "may"],
['category' => 8, 'value' => "april"]
]
这里有一个问题,$\u POST包含一个整数的值,中间有一个空格,然后是一个字符串,例如“6月2日”、“5月5日”等等
当我得到这个值时,我使用explode将其拆分,然后尝试将各个值添加到响应数组中。这只是增加了一个结果
我尝试的是:
$response = [];
foreach ($_POST as $key => $value) {
$split = explode(" ", $value);
$result = ['category' => $split[0], 'value' => $split[1]];
$response[] = $result;
}
由于某些原因,结果与上述建议不同。如果您有任何想法和建议,我们将不胜感激。您的问题与将数据处理到正确的结果数组没有任何关系。未持有预期数据的$u POST将承担责任。 此问题的所有答案都无法修复$\u POST数据,因为您的问题中没有提供html表单。唯一可以提供的潜在价值是优化阵列构建过程 以下两种方法通过减少已声明变量的数量来改进流程: 演示使用
$a=array('6月2日'、'5月5日'、'4月8日')
表示您的$\u POST数组
foreach($a as $v){
$r[]=array_combine(["category","value"],explode(" ",$v));
}
$r=array_map(function($v){return array_combine(["category","value"],explode(" ",$v));},$a);
$r
将为:
array (
0 =>
array (
'category' => '2',
'value' => 'june',
),
1 =>
array (
'category' => '5',
'value' => 'may',
),
2 =>
array (
'category' => '8',
'value' => 'april',
),
)
所用函数的参考:
,基本上,问题在于$\u帖子。这是带有已提交键值数据的全局数组。你不应该使用
foreach ($_POST as $key => $value) {
用于在不进行任何检查的情况下解析数据。这些数据是由用户提交的,它们并不总是具有您等待的格式
例如,如果您的HTML表单中有一个变量“dates”,您应该准备好$\u POST['dates']
将是所有“6月5日”、“7月7日”等的数组。不要忘记检查和验证您收到的所有用户数据。出于安全原因,这也很重要
您的代码(针对每个主体,无条件)正常,我已经检查过了。在explode()
之前尝试设置print\r()
,您将看到您使用的是数组,而不是字符串。尝试以下方法:
$response = [];
// just for example use this one
$data = "2 june, 5 may, 7 july";
$temp = explode(",", $data);
// and you can use this one for your case
/*$data = $_POST['var_name']; // var_name is your variable name from $_POST
$temp = explode(",", $data);*/
foreach ($temp as $key => $value) {
$split = explode(" ", trim($value));
foreach ($split as $val) {
$result = ['category' => $split[0], 'value' => $split[1]];
}
$respon[] = $result;
}
echo "<pre>";
echo print_r($respon);
echo "</pre";
你能在这里发布如何
echo''。打印($\u post,true)。''代码>看起来像那么,你得到的结果是什么?我只得到结果@桑迪只得到了结果@沙子-我不明白你想说什么。只需将这行代码放在脚本的顶部,然后将退出代码>之后,在这里发布您在浏览器中看到的内容。如果你什么也没看到,那么你的数据似乎丢失了,请检查我的答案。谢谢。如果不使用$key变量,为什么要设置它?为什么在OP的代码不使用的情况下,这会起作用?它基本上是一样的,但写的不同。对不起,我不得不匆匆忙忙地去吃晚饭,在发布之前没有仔细检查,我删除了$key
变量。我的回答表明,当输入数组如预期的那样时,没有任何错误。Victor是正确的,缺陷在输入数组中。感谢您的建议,此代码只是一个快速检查,安全措施已到位。。原因是表单有很多输入字段,我不想一个接一个地检查所有字段。因此,我使用formdata将数据发布到所说的php脚本中,从post数据在数组中设置键/值对。谢谢。这个答案使用了比OP中更多的代码来实现相同的结果。这个答案假设传入的$\u POST数据是csv字符串,但是基于OP的处理方法,没有理由相信这是真的。
Array
(
[0] => Array
(
[category] => 2
[value] => june
)
[1] => Array
(
[category] => 5
[value] => may
)
[2] => Array
(
[category] => 7
[value] => july
)
)
$response = array();
foreach ($_POST as $key => $value) {
$split = '';
$split = explode(" ", $value);
$result = array('category' => $split[0], 'value' => $split[1]);
$response[] = $result;
}