我想知道如何使用CakePHP Hash functions来实现以下目标: 这是之前的数组(插件存储在Session中):
$Data = array(
'add' => array(
'Certificate' => array(
'name' => '',
'entity_id' => '1',
'state_id' => '18',
'domicile' => '',
'formation_date' => array(
'month' => '',
'day' => '',
'year' => ''
)
)
),
'add2' => array(
'Certificate' => array(
'filing_fees' => '82'
)
)
)
这是后面的数组。我正在重新格式化它以调用Certificate-> save()。我删除了顶级并合并了证书模型。
$Data = array(
'Certificate' => array(
'name' => '',
'entity_id' => '1',
'state_id' => '18',
'domicile' => '',
'formation_date' => array(
'month' => '',
'day' => '',
'year' => ''
),
'filing_fees' => '82'
)
)
这是我目前的代码:
$processed = array();
foreach ($Data as $k => $array1) {
foreach ($array1 as $array1k => $array2) {
if (!isset($processed[$array1k])) {
$processed[$array1k] = array();
}
foreach ($array2 as $a2k => $a2v) {
$processed[$array1k][$a2k] = $a2v;
}
}
}
我的工作原理,但它不是非常“Cake-ish”,当我需要准备数据以保存更复杂的模型关系时(例如HABTM saveall),肯定会引起问题。
在发布之前,我尝试了Hash::combine
,Hash::merge
,array_merge_recursive()
及其组合。我理解PHP逻辑,但我找不到具有类似逻辑的CakePHP函数。
第一步是合并Model,然后第二步是删除键('add,'add2')。我得到的最接近的是Hash::combine
,但没有办法引用$keyPath {s} of the Model
,跳过数组的第一级('add','add2')。
如果你能指出我推荐Hash或其他CakePHP功能的方向,我很乐意采取下一步措施。