PHP array_push()没有排序

时间:2013-05-10 08:36:01

标签: php arrays array-push

我正在使用array_push()方法从我的数据库中插入ID。

示例:

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 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

$array_push指的是一个变量。

你的意思是array_push

array_push($array, $value); 

女巫等于:

$array[] = $value;

<强>文档:

  

array_push() array 视为堆栈,并将传递的变量推送到 array 的末尾。数组的长度增加了推送的变量数。具有与以下相同的效果:

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

重复每个var。

答案 2 :(得分:0)

array_push 是一个功能。 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);
}