php - 如何从相同的表单字段创建多维数组?
问题描述
我有具有相同表单字段名称的选项卡,在每个选项卡中我都想显示数据,例如
$meta_query = array(
'relation' => 'OR',
array(
'key' => 'Demo',
'value' => 'demo',
'compare' => '=',
'type' => 'NUMERIC',
),
array(
'key' => 'test',
'value' => 'tes',
'compare' => '=',
'type' => 'NUMERIC',
),
);
但我得到如下回复:
Array
(
[relation] => AND
[key1] => Demo
[value1] => demo
[compare1] => =
[type1] => NUMERIC
[key2] => test
[value2] => test
[compare2] => =
[type2] => NUMERIC
)
任何解决方案将不胜感激!
解决方案
array_splice 和 array_chunk 的组合可以解决问题。
$new = array_merge(array_splice($arr, 0,1), array_chunk($arr, 4, true));
var_export($new);
输出:
array (
'relation' => 'AND',
0 =>
array (
'key1' => 'Demo',
'value1' => 'demo',
'compare1' => '=',
'type1' => 'NUMERIC',
),
1 =>
array (
'key2' => 'test',
'value2' => 'test',
'compare2' => '=',
'type2' => 'NUMERIC',
),
)
如果您需要删除键中的 1 和 2 则可以循环数组并使用 array_combine 替换键
foreach($new as &$a){
if(is_array($a)) $a = array_combine(["key", "value", "compare", "type"],$a);
}
拼接数组并使用 preg_match 将键中的单词和数字分开。
将值添加到结果数组中的“键号 -1”。
$new = array_splice($arr, 0,1);
foreach($arr as $k => $v){
preg_match("/(.*?)(\d+)/", $k, $m);
$new[$m[2]-1][$m[1]] = $v;
}
var_export($new);
推荐阅读
- google-chrome-devtools - 如何解决 Dexie 绑定 IDBKeyRange 错误
- parallel-processing - SLURM 并行批量处理多个父作业,每个作业都有多个子作业
- html - 为什么根据 HTML5 info@example 有效?
- c# - Unity Game Object Visibility - 无法多次显示游戏对象
- python - 在保持非逻辑排序的同时对值进行排序
- ios - NSSecureUnarchiveFromDataTransformer.allowedTopLevelClasses 不再包含 NSSet?
- javascript - 为什么会有一个名为'send' of undefined 的错误?
- c++ - 容器类型的视图
- excel - 是否可以在 MATCH 函数中有一个“动态数组”?
- python - 尝试编写一个简单的程序并不断收到此错误