2013-05-10 56 views
0

我使用array_push()方法,從我的數據庫插入的ID。PHP array_push()沒有訂貨

例子:

print_r($arr_usr_ids); 
Array ([0] => 34 [1] => 35 [2] => 34 [3] => 37 [4] => 38 [5] => 30 ...) 

$arr_usrs = array(); 

foreach($arr_usr_ids as $key => $value) { 
if(isset($group_id[1]) && '1'=== $group_id[0]) { 
$numbers = $arr_usr_ids[$key]; // 30 
$arr_usrs[] = $numbers; 
} else 

if(isset($group_id[1]) && '2'=== $group_id[0]) { 
$numbers = $arr_usr_ids[$key]; // 34,33 
$arr_usrs[] = $numbers; 
} 
... 
} 

等等...

但array_push被訂購的數字

print_r($arr_usrs); 
Array ([0] => 30 [1] => 33 [2] => 34 [3] => 37 [4] => 38) 

正確的結果將是30,34,33,38,37

編輯該作品:

$arr_usrs_one = array(); 
$arr_usrs_two = array(); 
$arr_usrs_three = array(); 

foreach($arr_usr_ids as $key => $value) { 
if(isset($group_id[1]) && '1'=== $group_id[0]) { 
$numbers = $arr_usr_ids[$key]; // 30 
$arr_usrs_one[] = $numbers; 
} else 

if(isset($group_id[1]) && '2'=== $group_id[0]) { 
$numbers = $arr_usr_ids[$key]; // 34,33 
$arr_usrs_two[] = $numbers; 
} 
... 
} 

$result_usrs = array_merge($arr_usrs_one,$arr_usrs_two,$arr_usrs_three); 
+3

$ array_push不是一個函數..你的意思是array_push? – JackTurky 2013-05-10 08:39:04

+0

如果$ array_push是一個自定義函數或關閉,然後告訴我們該 – 2013-05-10 08:40:02

+0

沒有它的標準「PHP Array函數 - > array_push」的代碼http://www.php.net/manual/en/function.array-push .php – Jim 2013-05-10 08:42:04

回答

1

只要改變從array_push[]

$arr_usrs = array(); 

if(isset($group_id[1]) && '1'=== $group_id[0]) { 
$numbers = $arr_usr_ids; // 30 
$arr_usrs[] = $numbers; 
} 

if(isset($group_id[1]) && '2'=== $group_id[0]) { 
$numbers = $arr_usr_ids; // 34,33 
$arr_usrs[] = $numbers; 
} 
print_r($arr_usrs); 
+0

與array_push具有相同的效果...而不是這個30,34,33,37,38,35我得到這個30,33,34,35,37,38 – Jim 2013-05-10 09:00:36

+0

@Jim - array_push does __not__ order ....你在做什麼$ arr_usrs得到一個逗號分隔的字符串? – 2013-05-10 09:16:07

+0

@MarkBaker簡單地這個$ newnumbers = implode(',',$ arr_usrs);但這並不重要,因爲print_r($ arr_usrs);給我看錯了順序:/ – Jim 2013-05-10 09:23:45

0

$array_push指的是一個變量。

你正確意味着array_push

array_push($array, $value); 

女巫等於:

$array[] = $value; 

文檔:

array_push()治療陣列作爲堆棧,並將傳遞的變量推送到數組的末尾。數組的長度增加了所推送變量的數量。具有相同的效果:

<?php 
$array[] = $var; 
?> 

爲每個變量重複。

+0

這是否回答這個問題? – Jon 2013-05-10 08:41:13

+0

@Jon是的,我認爲是。很確定OP只是錯過了那一個。 – andlrc 2013-05-10 08:41:58

+0

嘗試自己調用'array_push'。你會看到它沒有重新排序。 – Jon 2013-05-10 08:47:33

0

array_push是函數。 PF Manual

$arr_usrs = array(); 

if(isset($group_id[1]) && '1'=== $group_id[0]) { 
$numbers = $arr_usr_ids; // 30 
array_push($arr_usrs,$numbers); 
} 

if(isset($group_id[1]) && '2'=== $group_id[0]) { 
$numbers = $arr_usr_ids; // 34,33 
array_push($arr_usrs,$numbers); 
}