2012-02-12 49 views
0

我有一个数组。CakePHP并设置:结合默认值

在某个阶段,我增加了更多的数据。

因此,我们有:

$editable = someArrayGeneratingFunctionHere(); 
$points = preg_split('/,/',$this->data['Video']['points']); 

可爱。现在,“points”数组有一堆数据,可能已经或可能不在编辑数组中。 我想要的是检查数据是否处于可编辑状态,如果不是,请添加。 我也想有效地做到这一点。

所以,我有这样的方法:

private function associateWithRelatedBodyParts($editable, $keysAlreadyPresent, ...){ 
    $point = getOtherPointsThatAreRelatedToThisPoint(); 
    if (!isset($keysAlreadyPresent[$point])){ 
     insertDataIntoEditable();   
    } //else the value is already here. Do not add it again! 
    return $editable; 
} 

所以整个事情是这样的:

$editable = someArrayGeneratingFunctionHere(); 
$points = preg_split('/,/',$this->data['Video']['points']); 
$valuesInEditable = ... 
foreach ($points as $point){ 
    $editable = $this->associateWithRelatedBodyParts($editable, $valuesInEditable,...); 
} 

设置什么了很多!所有这一切的点如下:

我想扁平化原始的$ editable数组,因为这样,我可以快速测试一个点是否处于可编辑状态。如果不是,我会添加它。

我以检索的valuesInEditable阵列电流的方法是

$valuesInEditable = Set::combine($editable, 'BodyPartsVideo.{n}.body_part_id','BodyPartsVideo.{n}.body_part_id'); 

这是鲁钝。我将坚持相同的值两次到数组中。我真正喜欢的只是:

$valuesInEditable = Set::combine($editable, 'BodyPartsVideo.{n}.body_part_id',True); 

或类似的东西。所以这个问题的整个观点是:

我该如何设置一个默认值,使用Set:combine in cakephp。如果你有更好的建议,我很乐意听到它。

回答

0

没有看到你的数组的结构,你似乎经历了很多工作来组合这两个数组。是否有一个原因,你不能使用

$final_array = array_merge($points, $editable); 

之前运行设置结合?