2016-06-23 101 views
1

從特定的查詢中,我恢復了一個包含User類屬性的多維數組。將多個數組推送到一個唯一的多維數組中

用戶條目數(用戶數組查詢結果中的用戶數)是動態的。對於特定的腳本,我需要恢復這個數組有關User的特定值。例如電子郵件,用戶名,電話號碼等... 但我不需要恢復所有的值。

因此,按照規範,我創建了一個foreach循環是這樣的:

$finalArray = array(); // my final multi array containing all specific User data I sortin the foreach loop 
$userArray = array(); // define an empty array to push unique user data I need 
foreach ($users as $user) { 
    $userArray['email'] = $user->getEmail(); 
    $userArray['username'] = $user->getUserName(); 
    /* 
    * etc ... 
    * 
    **/ 
} 

現在我需要把所有$userArray到我$finalArray,但$finalArray必須是一個multidiemensionnal數組是這樣的:

var-dump($finalArray); 

/** have to return a multi dim array like this **/ 

array (size=2) 
    0 => /** user one **/ 
     array (size=5) 
      0 => string 'user1 email' 
      1 => string 'user1 username' 
    1 => /** user 2 **/ 
     array (size=5) 
      0 => string 'user2 email' 
      1 => string 'user2 username' 
    2 => /** user 3 **/ 
     array (size=5) 
      0 => string 'user3 email' 
      1 => string 'user3 username' 
    3 => /** user 4 
      etc ... 
    **/ 

如何繼續以包含所有$userArray的格式創建此數組?

回答

1

後創建$userArray你只需將它添加到$fianlArray作爲新條目是這樣的:

$finalArray = array(); // my final multi array containing all specific User data I sortin the foreach loop 

foreach ($users as $user) { 
    $userArray = array(); // define an empty array to push unique user data I need 
    $userArray['email'] = $user->getEmail(); 
    $userArray['username'] = $user->getUserName(); 
    /* 
    * etc ... 
    * 
    **/ 

    //Add userArray as a new entry in finalArray. 
    $finalArray[] = $userArray; 
} 
+2

@ChetanAmeta是的,最好每次重置它以清空數組,以防字段每個用戶都不同。我在循環中移動。謝謝 –

+0

它似乎答案如此簡單,因爲我的問題很愚蠢,順便說一句菜鳥問題(對不起),我測試了很多東西,但我不想將這行添加到foreach循環中!謝謝你,保存我的一天,並且我意識到當我編寫一些代碼時我需要更加集中。 –

3

這將是足夠使用單一陣列$finalArray來得到所需的多維數組:

$finalArray = []; 
foreach ($users as $user) { 
    $finalArray[] = ['email' => $user->getEmail(), 'username' => $user->getUserName()]; 
    /** 
    * etc ... 
    **/ 
} 
+0

你的答案是一個很好的答案。但是,我驗證了第一個書面回覆,不要親自採訪,這僅僅是因爲另一個堆棧用戶比你更快。但是,謝謝你花時間寫一篇文章,並幫助我意識到我需要專注自己,因爲這個問題真的是一個新手。 –

+0

@french_dev,沒關係 – RomanPerekhrest

相關問題