将新值推送到数组,同时保持旧值不变

时间:2013-12-07 21:54:35

标签: php arrays array-push

不确定如何解释此问题或在此问题中搜索答案。

我正在创建一个要发送的表单,并希望使用现有数组并将其推送到新数组而不会影响旧数组。

这就是我现在正在做的事情:

$required_fields = array( "full_name", "email", "phone", "preferred_date" );
$whitelist = array_push( $required_fields, "patient_type", "appointment_time", "comments");

但是这样做会改变$ required字段数组。如何在不影响$ required_fields的情况下将这些现有值推送到$ whitelist数组?

3 个答案:

答案 0 :(得分:2)

我想你可能需要array_merge

$whitelist = array_merge( $required_fields, array(
  "patient_type", 
  "appointment_time", 
  "comments"
));

这将$required_fields单独留下,$whitelist将是:

array(
  "full_name", 
  "email", 
  "phone", 
  "preferred_date", 
  "patient_type", 
  "appointment_time", 
  "comments"
);

答案 1 :(得分:1)

您可能想要使用array_merge。请注意,array_merge仅接受array类型的参数。

相反,当您使用array_push时,第一个参数本身会被修改。如果您查看array_push的文档,第一个参数将通过引用传递,并自行修改,这就是为什么在您的情况下$required_fields正在被修改。

因此,正确的代码应该是:

$required_fields = array( "full_name", "email", "phone", "preferred_date" );
$whitelist = array_merge( $required_fields, array("patient_type", "appointment_time",  "comments"));

答案 2 :(得分:1)

http://php.net/manual/en/function.array-push.php

如果你看一下array_push的文档,它实际上会修改第一个参数,只返回数组中新元素的数量。

您要做的是复制required_fields数组,然后添加一些新元素。您可以使用array_merge函数来完成此操作。

http://www.php.net/manual/en/function.array-merge.php