2013-05-10 25 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); 
}