2015-10-24 45 views
0

我想要做的是與所有Arrary推到一個值添加到一個數組,但預期在CakePHP中

Array 
(
[77] => 77 
) 

Array 
(
[62] => 62 
[84] => 84 
[85] => 85 
} 

    $this_user_id = $user['User']['id']; // is 77 
    $user_array = array(); 
    $user_array[$this_user_id] = $user['User']['id']; // creates an array of [77] => 77 

    $group_by_friends = array_push($user_array, $friends_ids); // where frinds_ids are is the second array 
    debug($group_by_friends); 

添加ID = 77到另一個陣列上的調試模式我得到它沒有這樣做只有數字「2」 預先感謝您。

回答

0

我想你真正想要做的是

$group_by_friends = array_merge($user_array, $friends_ids); 

,而不是

$group_by_friends = array_push($user_array, '$friends_ids'); 

你得到2的結果,因爲array_push返回數組中元素的新號碼,而不是一個新的陣列。並且將$friends_ids放在引號中也是錯誤的 - 因此您將一個字符串添加到數組中而不是數組本身。

這是一個完整的例子:

$user_array = array(); 
$user_array[77] = 77; 
$friends_ids = array('88' => 88, '99' => 99); 

$group_by_friends = array_merge($user_array, $friends_ids); 
print_r($group_by_friends); 

輸出:

Array 
(
    [0] => 77 
    [1] => 88 
    [2] => 99 
) 
+0

我這樣做之前,並沒有succees。 –

+0

我用更詳細的信息更新了我的答案。這個解決方案有效,也許你有另一個錯誤。 – PatrickD

+0

謝謝帕特里克,但它不適合我的目的。 –

0

您可以使用+運算符。

+運算符返回附加到左側數組的右側數組;對於這兩個數組中存在的鍵,將使用左側數組中的元素,並忽略右側數組中的匹配元素。

Source

$j = array(77 => 77) ; 
$k = array(
    62 => 62, 
    84 => 84, 
    85 => 85, 
); 

$j = $j + $k; 
print_r($j); 

output: 
Array ([77] => 77 [62] => 62 [84] => 84 [85] => 85) 
0

不要使用array_push(),因爲期望的混合值,將不設置一個鍵爲您服務。

$userId = $user['User']['id']; 
 
$userArr[$userId] = $userId; 
 

 
$friendsIdsArray = array(); 
 
// assume this has the following 
 
/* 
 
* $friendsIdsArray[62] => 62 
 
* $friendsIdsArray[84] => 84 
 
* $friendsIdsArray[85] => 85 
 
*/ 
 

 
// array_merge 
 
$friendsIdsArray = array_merge($friendsIdsArray, $userArr); 
 

 
// or set the value yourself 
 
$friendsIdsArray[$userArr] = $userArr;