数组推送在向数组添加值后创建其他元素

时间:2016-04-26 13:55:28

标签: php arrays

我有一个while循环,我从中获取post id并将它们添加到数组中,如下所示

$tobi = array();
while($result = mysqli_fetch_array($msql)){
$imp = $result['msg_id'];  // these id are like 316 etc
array_push($tobi, $imp);
}
print_r($tobi);

但是当我打印出阵列时,结果

  

数组([0] => 316)数组([0] => 315)

为什么数组创建了另一个元素? 我希望数组像

Array ( [0] => 316 [1] => 315 )

我尝试使用$ tobi [] = $ imp;也得到了相同的结果

执行print_r($ result);

之后
Array ( [0] => 318 [msg_id] => 318 ) Array ( [0] => 318 ) Array ( [0] => 317 [msg_id] => 317 ) Array ( [0] => 317 ) 

执行print_r($ msql);

之后
mysqli_result Object ( [current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 2 [type] => 0 ) Array ( [0] => 318 ) Array ( [0] => 317 ) 

4 个答案:

答案 0 :(得分:2)

你做得太多了。来自评论的SQL

$msql = mysqli_query($connecDB, "SELECT msg_id FROM messages WHERE time > $last_post_id ORDER BY time DESC")

只获取msg_id,因此当您调用$imp = $result['msg_id'];时,您正在创建它。因此,为什么你的数组令人困惑。

你应该能够做到:

$tobi = array();
while($result = mysqli_fetch_array($msql)){

    $tobi[] =  $result[0];
}
print_r($tobi);

<强>更新

我不确定为什么会给出奇怪的结果。它似乎是以我们在提供的代码中看不到的方式输出。我使用了我的数据库并运行:

$msql = mysqli_query($link, "SELECT f_name FROM leads");

有5个条目2没有f_name。当我做print_r($msql)时,我收到了以下内容:

mysqli_result Object ( [current_field] => 0 [field_count] => 1 [lengths] => [num_rows] => 5 [type] => 0 )

然后,我使用数字和关联方式运行上面的代码,返回(双向):

Array ( [0] => [1] => TEST [2] => [3] => Coury [4] => 222222 )

同样在这个集合中,我能够运行OP原始代码并获得预期的结果。

答案 1 :(得分:0)

试试这个,我希望这会奏效!

$tobi = array(); $new_arr = array();
while($result = mysqli_fetch_array($msql)){
$imp = $result['msg_id'];
$new_arr[] = array_push($tobi, $imp);
}
print_r($new_arr);

答案 2 :(得分:0)

试试这个:

$tobi = array();
while($result = mysqli_fetch_array($msql)){
if(isset($result['msg_id']))
 {

$imp = $result['msg_id'];  // these id are like 316 etc
array_push($tobi, $imp);
 }
}
print_r($tobi);

答案 3 :(得分:-1)

使用它。它可能对你有所帮助。

$tobi = array();
while($result = mysqli_fetch_array($msql)){
$imp = $result['msg_id'];  
$tobi[]= $imp;
}
print_r($tobi);