2015-10-27 29 views
0

我對PHP中的數組有點新,我有一個連接到我的數據庫的函數,並返回數組中的結果,一旦我有數組在使用它聰明我不得不基本反彙編,並創建一個新的數組。數組在PHP的末尾創建一個NULL記錄PHP

我一直在使用for循環來實現這一點。但是每次運行for循環時,我都會得到一個NULL記錄作爲我的最後一個值。

如果返回13條記​​錄,則由於某種原因它會創建14條記錄。

歡迎任何意見:)。

$permissionsarray=db_select("select group_name from `user_groups` order by group_name"); 
for($i = 0; $permissions[$i] = $permissionsarray[$i]['group_name']; $i++) ; 

回答

3

您的循環測試是否$permissions[$i]評估的東西「truthy」 - 如果它不(可能爲NULL你的情況)的契稅已經完成,即$權限[$ i]已經分配。

的直接解決方案會是這樣的

$permissionsarray=db_select("select group_name from `user_groups` order by group_name"); 
for($i = 0; $p = $permissionsarray[$i]['group_name']; $i++) { 
    $permissions[$i] = $p; 
} 

(而且很可能還是提高一個未定義的指標警告)。

但是沒有必要自己「處理」索引。使用foreach -loop,無論使用哪個實際的密鑰,都可以迭代數組。用[]你可以追加項目到一個數組,而不需要跟蹤你自己的「下一個鍵」。

$permissions = array(); 
foreach(db_select("select group_name from `user_groups` order by group_name") as $p) { 
    $permissions[] = $p['group_name']; 
} 

,但有一個更簡單的方法

$permissionsarray=db_select("select group_name from `user_groups` order by group_name"); 
$permissions = array_column($permissionsarray, 'group_name'); 

看到http://docs.php.net/array_column
(如果你使用的PHP < php5.5有一個填充的鏈接,該功能與舊工作版本的PHP)

+0

直接的解決方案是'foreach()'。但是,耶!用於'array_column()'。 – AbraCadaver

+0

@AbraCadaver:是的,但我希望「即時解決方案」儘可能接近原始代碼,因爲我的描述一開始並不那麼清楚;-)但我還會添加一個foreach代碼片段... – VolkerK

+0

謝謝@VolkerK首選最後的解決方案。最簡單的 – Marcel