[英]Multidimensionnal array to single one
在使用 ajax 和 PHP 构建表单时,我正在努力处理多维数组。 我的 ajax 向 php 发送一个多维数组。 我想将此数组转换为一维数组。
所以考虑这段代码:
$reasons = $_POST['reasons'];
var_dump($reasons);
其中 output 这个:
array(1) {
[0]=>
array(2) {
["id"]=>
string(2) "37"
["reason"]=>
string(9) "Something"
}
}
我现在希望它是这样的:
$reasons = {
37 => "Something"
}
我怎样才能做到这一点? 我已经搜索了几个小时,但没有找到正确的解决方案......
我试过的:
1)
function array_flatten($array) {
if (!is_array($array)) {
return FALSE;
}
$reasons = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$reasons = array_merge($reasons, array_flatten($value));
} else {
$reasons[$key] = $value;
}
}
return $reasons;
}
array_flatten($_POST['reasons']);
var_dump($reasons);
Output: NULL
$reasons = $_POST['reasons'];
$tabReasons = array_reduce($reasons, 'array_merge', array());
var_dump($tabReasons);
Output 这个:
array(2) {
["id"]=>
string(2) "37"
["reason"]=>
string(9) "Parce que"
}
哪种工作,但我的多维数组可以存储多个 ID 和原因。 发生这种情况时,上面的代码只返回一对键和值
就像我的多维中有两个 id 和两个原因一样,它只会将我最后一个 id 和原因返回到一个数组中......
我想要类似的东西:数组(id => 原因,id => 原因等......)
像这样的东西
function array_flatten($data) {
$res=array();
foreach ($data as $val) {
$res[$val['id']] =$val['reason'];
}
return $res;
}
您可以使用array_column()提取列的线性数据,并使用 array_combine()将它们组合为键/值。
$reasons = [
['id' => 37, 'reason' => 'something'],
['id' => 38, 'reason' => 'something else'],
];
$indexed = array_combine(array_column($reasons, 'id'), array_column($reasons, 'reason'));
print_r($indexed);
Output:
Array
(
[37] => something
[38] => something else
)
不确定您的数据是否比此处显示的更复杂,但从提供的数据来看,这很简单。
$result = [
$reasons[0]['id'] => $reasons[0]['reason']
];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.