2012-02-12 116 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); 

之前運行設置結合?