【问题标题】:Add element to array with Reference使用引用将元素添加到数组
【发布时间】:2013-10-22 06:54:43
【问题描述】:

我正在尝试构建一个函数,以便在我的项目中更轻松地进行数组操作。

我想通过传递参考来做到这一点。希望以更高效和节省资源的方式。

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() 的函数用于向数组添加新内容。
  • @Coulton 我想用键添加元素。例如; $arr = array('0'=>'zero','1'=>'one','2'=>'two'); 我需要添加$element = array('21'=>'twentyone','45'=>'fourthy-five');array_push($arr,$element); 它创建额外的索引[3] [3]=>array([21]... 我需要[2]=>two,[21]=>twentyone..

标签: php arrays pass-by-reference


【解决方案1】:

试试

array_push($data, $element);

array_push 函数将新数据添加到数组末尾。

在此处查看详细信息: http://php.net/manual/de/function.array-push.php

【讨论】:

  • 我对问题添加了评论。
【解决方案2】:

如何使用:

$data[] = $element;

而不是

$data += $element;

(假设你不能使用 array_push)。

【讨论】:

  • 很好,我没有意识到你可以做到这一点,我已经使用 PHP 有一段时间了,哈哈。这仅在您想要数组的数字键时才有用。 $data[] = $element;$data[] = array() 不是一回事!
  • 我可以.. 但是在我想写add_element($add,$data); 并移动的代码中,我不想写$data = add_element($add,$data);。这就是为什么我想使用参考。 @Alexandre N.
  • array_push() 将按照您希望的方式工作,您传递对它的引用
  • @Coulton 确实如此,但请参阅我对您有问题的评论的最新回复。
  • @Coulton 我想用键添加元素。例如; $arr = array('0'=>'zero','1'=>'one','2'=>'two');我需要添加$element = array('21'=>'twentyone','45'=>'fourthy-five');array_push($arr,$element);它会创建额外的索引[3][3]=>array([21]...我需要[2]=>two,[21]=>twentyone...
【解决方案3】:

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

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);

在这里现场观看:http://www.tehplayground.com/#DJXofIeQK

但是,我刚刚将您发布的内容作为起点。以上与以下基本相同,无需特殊功能:

$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);

在这里查看:http://www.tehplayground.com/#PAbhOHaPT

【讨论】:

  • 这正是我想要的。感谢您努力深入了解我的问题。
  • 没问题,一切顺利:)
  • 我在函数的开头添加了一行,如果您想更新您的回复,请查看。既然我会用它作为助手,它必须帮助我。当我说add_element($create_variable,$elements); 时,它也应该创建它:) 所以这里是一行:isset($data) || $data = array();
【解决方案4】:
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);

【讨论】:

    猜你喜欢
    • 2021-08-19
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 2019-05-03
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多