如何在不覆盖或复制现有密钥的情况下附加到数组?

时间:2014-04-03 00:56:03

标签: php arrays

我的输出是:

[price_hidden_label] => 1
[categories] => Array
     (
        [0] => 26
      )

我目前尝试更新的代码是:

updateProduct($product->id, array('categories[108]'));

当我运行此函数时,它会覆盖现有数组,为我提供如下输出:

[price_hidden_label] => 1
[categories] => Array
     (
        [0] => 108
      )

我想要实现的目标如下:

[price_hidden_label] => 1
[categories] => Array
     (
        [0] => 26
        [1] => 108
      )

但....如果108已经存在,我希望它会忽略它。我不想要:

[price_hidden_label] => 1
[categories] => Array
     (
        [0] => 26
        [1] => 108
        [2] => 108
      )

知道我是怎么做到的吗?

2 个答案:

答案 0 :(得分:4)

您可以使用

将元素推送到数组
$arr[] = $new_var;

并检查

是否已存在某个值
if(in_array($new_var, $arr))

在示例中(尝试按照输入输出):

$categories = array();
$categories[] = 26;
$input_value = 108;
if(!in_array($input_value, $categories)) {
  $categories[] = $input_value;
}

修改。在函数中(我的PHP有点生疏,所以可能需要进行小的调整但是你得到了基本的想法)

function updateProduct($arr, $input) {
  if(!in_array($input, $arr)) {
    $arr[] = $input;
  }
}

然后将其称为

updateProduct($categories, $input_value);

答案 1 :(得分:0)

您可以使用array_push向项目中添加项目,并可以使用in_array检查项目是否已存在,或者您可以在完成后使用array_unique删除重复项目你的其余部分也是如此。