【问题标题】:PHP Arrays: How to add 'key & value' to an existing arrayPHP 数组:如何将“键和值”添加到现有数组
【发布时间】:2016-05-20 10:24:24
【问题描述】:

我不知道如何向现有数组添加键和值。我的数组是这样的。最初我尝试使用array_push() 添加,但它没有按我的需要添加。

我在给出“var_dump”后给出了我的输出。

array (size=6)
  0 => 
    array (size=3)
     'id' => int 7
      'title' => string 'Pongal' (length=6)
      'start' => string '2016-05-16' (length=10)
  1 => 
    array (size=3)
       'id' => int 8
      'title' => string 'big day' (length=7)
      'start' => string '2016-05-04' (length=10)
  2 => 
    array (size=3)
      'id' => int 9
      'title' => string 'marriage day' (length=12)
      'start' => string '2016-05-19' (length=10)
  3 => 
    array (size=3)
      'id' => int 10
      'title' => string 'Karthiks  bday' (length=14)
      'start' => string '2016-06-11' (length=10)
  4 => 
    array (size=3)
      'id' => int 12
     'title' => string 'Election date announced' (length=23)
      'start' => string '2016-06-01' (length=10)

现在,我想在每个数组的所有元素之后插入 array('sample_key' => 'sample_value')。

我该怎么做?这是我希望的结果是这样的:-

array (size=6)
  0 => 
    array (size=3)
       'id' => int 7
      'title' => string 'Pongal' (length=6)
       'start' => string '2016-05-16' (length=10)
       ‘color’ => ‘red’
  1 => 
    array (size=3)
      'id' => int 8
      'title' => string 'big day' (length=7)
      'start' => string '2016-05-04' (length=10)
      ‘color’ => ‘red’
  2 => 
    array (size=3)
      'id' => int 9
      'title' => string 'marriage day' (length=12)
      'start' => string '2016-05-19' (length=10)
      ‘color’ => ‘red’
  3 => 
    array (size=3)
      'id' => int 10
      'title' => string 'Karthiks  bday' (length=14)
      'start' => string '2016-06-11' (length=10)
      ‘color’ => ‘red’
  4 => 
    array (size=3)
      'id' => int 12
      'title' => string 'Election date announced' (length=23)
      'start' => string '2016-06-01' (length=10)
      ‘color’ => ‘red’

请注意,我已将 'color' => 'red' 添加到所有索引中

【问题讨论】:

  • $existingArray = []; $existingArray['mynewkey'] = 'mynewvalue';?
  • 使用 foreach 并像这样:$value[$key] = $new_val
  • @Frayne,你能用'foreach'举个例子吗。。
  • 是的,请检查我的答案。
  • 如果key & value 是动态的呢?

标签: php arrays key-value array-push


【解决方案1】:

只需这样做:Working demo

使用& 可以更改主数组,只需使用$val['color'] = 'red' 在数组中添加新的键、值对。

foreach($arr as $key => &$val){
    $val['color'] = 'red';
}

请注意,与符号的“回写”功能即使在循环完成后仍然存在:将$val 重置为新值将更改$val 中的最后一个元素,这通常是出乎意料的。解决此类错误有三种方法:

  • 避免回写,只使用完整的数组表达式在循环内写入值;
  • 不要在同一范围内重复使用 $val 变量,即使是另一个 foreach() 循环;
  • $val 变量上使用unset() 将其与要写回的数组断开连接。

【讨论】:

  • 请记住,在循环之后,再次设置 $val 将修改 $arr 中的最后一个元素 - 所以要小心!
  • @halfer,有什么办法可以解决这个问题吗?我认为unset($val);
  • 绝对是的,这会破坏回写链接。我wrote about this here.
  • 没有预定义的 php 函数吗?我希望有一个
【解决方案2】:
foreach($arr as $key => $row){
  $arr[$key]['color']="red";
}

【讨论】:

  • 或者你可以使用@frayne-konok的例子,但你不需要$key =>,只需要写foreach ($arr as &$val)
  • 是的,对我有帮助的同行,但你能解释一下'&$'的用途是什么吗?
  • 我可以试试,但对不起我的英语。当您使用foreach($array as $key=>$value) 时,您每次都有新的变量$value,它等于$array[$key]。但是当你使用&$$value不等于$array[$key]时,它一样
猜你喜欢
  • 1970-01-01
  • 2016-03-28
  • 2014-01-10
  • 2016-07-22
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
相关资源
最近更新 更多