Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将元素添加到带有引用的数组中_Php_Arrays_Pass By Reference - Fatal编程技术网

Php 将元素添加到带有引用的数组中

Php 将元素添加到带有引用的数组中,php,arrays,pass-by-reference,Php,Arrays,Pass By Reference,我正在尝试在我的项目中构建一个函数,以简化数组操作 我想通过传递引用来做这件事。希望能以更加高效和节约资源的方式 function add_element ($element=array(),&$data) { if(!empty($data)) { $data += $element; } return true; } // $element can be array('one','two') or array('color'=>'blu

我正在尝试在我的项目中构建一个函数,以简化数组操作

我想通过传递引用来做这件事。希望能以更加高效和节约资源的方式

function add_element ($element=array(),&$data) {
    if(!empty($data)) {
      $data += $element;
    }
    return true;
  }

// $element can be array('one','two') or array('color'=>'blue','type'=>'card')
我对推荐人没有经验,谢谢你的提示。

试试看

array_push($data, $element);
array_push函数将新数据添加到数组的末尾

请在此处查看详细信息:

如何使用:

$data[]=$element

而不是

$data+=$element


(假设您不能使用array\u push)。

我相信这将产生您所期望的效果。我们传入原始数组作为引用,它会将传递给它的任何数据添加到原始数组中

function add_element (&$original_array = array(), $data) {

  // Cast an array if it isn't already
  !is_array($data) ? (array)$data : null;

  if(!empty($data)) {
    $original_array = $original_array + $data;
  }
  return true;
}

$names_array = array("first_name" => "bob");
$data_to_add = array("second_name" => "fred");

// Add new variable
add_element($names_array, $data_to_add);

// Show the contents
print_r($names_array);
现场观看:

然而,我刚刚把你发布的内容作为起点。以上与以下基本相同,无需特殊功能:

$names_array = array("first_name" => "bob");
$data_to_add = array("second_name" => "fred");

// Add new variable
$names_array = $names_array + $data_to_add;

// Show the contents
print_r($names_array);

在这里查看:

已经有一个函数名为
array\u push()
,用于向数组添加新内容。@Coulton我想用key添加元素。比如,<代码>$arr=array('0'=>'zero','1'=>'one','2'=>'two')我需要添加
$element=array('21'=>'twentyone','45'=>'fourthy-five')
数组推送时($arr,$element)
它创建了额外的索引
[3]
[3]=>数组([21]…
我需要
[2]=>两个[21]=>Twentyne
。不错,我没有意识到你可以这么做,我已经使用PHP有一段时间了。这只在你需要数组的数字键时才有用。
$data[]=$element;
$data[]=array()
不是一回事!我可以..但在我想写的
添加元素($add,$data);
和移动的代码中,我不想做
$data=add_元素($add,$data);
。这就是为什么我想使用引用。@Alexandre N.array\u push()将按您希望的方式工作,您将引用传递给it@Coulton是的,但请看我对你的评论的最新回复。@Coulton我想用key添加元素。例如;
$arr=array('0'=>'zero','1'=>'one','2'=>'two');
我需要添加
$element=array('21'=>'twentyane','45'=>'fourthy-five'))
array\u push($arr,$element);
它会创建额外的索引
[3]
[3]=>数组([21]…
我需要
[2]=>两个,[21]=>二十一个…
我给这个问题添加了注释。这正是我想要的。谢谢你努力对我的问题有一个坚实的理解。没问题,最好:)我在函数的开头添加了一行,请检查您是否希望更新您的回复。因为我将使用它作为帮助程序,它必须帮助我。当我说
add_element($create_variable,$elements);
它也应该创建它:)所以这行:
isset($data)|$data=array()
function add_element($element=array(), &$data) {
    if(!empty($element) && !empty($data)) {
      $data = array_merge($data, $element);
    }
    return true;
}

$test = array(0=>'zero');
add_element(array(1=>'one'), $test);
print_r($test);