为什么我不需要在关联数组中使用array_push?

时间:2013-02-15 17:46:21

标签: php arrays

我使用的是此代码,但如果我使用array_push(),则会使用null插入值,我使用array_push在数组中输入值

foreach ($_POST['record_num'] as $check_rec_num) {
    if(!in_array($check_rec_num, $_SESSION['selected_record'][$pageno])) {
        array_push($_SESSION['selected_record'][$pageno][], $check_rec_num);
    }
}

但是当我使用它时,它会自动在数组中添加值,而不使用array_push为什么会这样?

foreach ($_POST['rec_num'] as $check_rec_num) {
    if(!in_array($check_rec_num, $_SESSION['selected_record'][$pageno])) {
        $_SESSION['selected_record'][$pageno][] = $check_rec_num;
    }
}

第一个例子

Array ( [1] => Array ( [0] => 36 [1] => 35 ) [2] => )

第二个例子(没有小节括号)

Array ( [1] => Array ( [0] => 36 [1] => 35 [2] => 34 ) [2] => Array ( [0] => ) )

Array Design第3个示例,没有使用array_push如何在没有array_push的数组末尾自动添加值?

Array ( 
   [1] => Array ( 
          [0] => 36 
          [1] => 35 
      ) 
   [2] => Array ( 
          [0] => 33 
          [1] => 32
      )
)

2 个答案:

答案 0 :(得分:2)

中有额外的[]
array_push($_SESSION['selected_record'][$pageno][], $check_rec_num);

这样做:

$_SESSION['selected_record'][$pageno] = array();
array_push($_SESSION['selected_record'][$pageno], $check_rec_num);

请参阅array_push上的手册。

  

注意:如果第一个参数不是数组,array_push()将发出警告。这与创建新数组的$ var []行为不同。

然而,你应该更好地使用$_SESSION['selected_record'][$pageno][],因为

  

注意:如果使用array_push()向数组添加一个元素,最好使用$ array [] =,因为这样就没有调用函数的开销。

答案 1 :(得分:0)

那是因为额外[] 删除它,它将工作:

array_push($_SESSION['selected_record'][$pageno], $check_rec_num);