array_push 正在替换变量,而不是将它们添加到末尾


array_push is replacing the variables instead of adding them to the end

array_push($info["First_Names"], "$fname");
array_push($info["Last_Names"], "$lname");
array_push($info["Gender"], "$gender");

有人看到问题吗?数组推送只是替换变量而不是添加它们。$fname$lname$gender 的变量由用户在表单中定义。我希望变量简单地添加到数组的末尾,而不是被替换。任何回复都值得赞赏。

如果$info["First_Names"]$info["Last_Names"]$info["Gender"]都是数组,我看不出任何问题。

$info = array();
$info["First_Names"] = array();
$info["Last_Names"] = array();
$info["Gender"] = array();
$fname = 'Fname1';
$lname = 'Lname1';
$gender = 'M';
array_push( $info["First_Names"] ,$fname );
array_push( $info["Last_Names"] ,$lname );
array_push( $info["Gender"] ,$gender );
$fname = 'Fname2';
$lname = 'Lname2';
$gender = 'F';
array_push( $info["First_Names"] ,$fname );
array_push( $info["Last_Names"] ,$lname );
array_push( $info["Gender"] ,$gender );
var_dump( $info );

输出:

array (size=3)
  'First_Names' => 
    array (size=2)
      0 => string 'Fname1' (length=6)
      1 => string 'Fname2' (length=6)
  'Last_Names' => 
    array (size=2)
      0 => string 'Lname1' (length=6)
      1 => string 'Lname2' (length=6)
  'Gender' => 
    array (size=2)
      0 => string 'M' (length=1)
      1 => string 'F' (length=1)

从手册:

Note: If you use array_push() to add one element to the array it's better to use $array[] = because in that way there is no overhead of calling a function.

例如

<?php
$info["First_Names"][] = $fname;
$info["Last_Names"][] = $lname;
$info["Gender"][] = $gender;
?>

另一种方法是使用函数。

<?php
function add_in_key_array($array, $key, $value){
 $array[$key][] = $value;
}
?>