簡體   English   中英

關聯數組的數組,向關聯數組添加新元素

[英]Array of associative arrays, add new elements to the associative arrays

如果我有這樣的數組:

array(2) {
  [0]=>
  array(2) {
    ["id"]=>
    string(2) "34"
    ["total"]=>
    string(6) "122337"
  },
[1]=>
  array(2) {
    ["id"]=>
    string(2) "43"
    ["total"]=>
    string(6) "232337"
  }
}

我想為每個子數組添加一個新的鍵值,例如,它會像這樣結束:

array(2) {
      [0]=>
      array(2) {
        ["id"]=>
        string(2) "34"
        ["total"]=>
        string(6) "122337"
        ["newkey"]=>
        string(6) "hihihi"
      },
    [1]=>
      array(2) {
        ["id"]=>
        string(2) "43"
        ["total"]=>
        string(6) "232337"
       ["newkey"]=>
        string(6) "hihihi"
      }
    }

我該怎么辦?

我試過像這樣的foreach:

foreach($exterior_array as $inside_array) {
 $inside_array['newkey'] = "hihihi";
}

但是一旦進入foreach,值就不會被保存。

foreach($exterior_array as $inside_array) {
    $inside_array['newkey'] = "hihihi";
}

但是一旦進入foreach,值就不會被保存。

那是因為你正在通過$inside_array數組的副本。 您可以通過使$inside_array成為$inside_array值的別名來訪問要更改的“ $inside_array ”值; 使用參考:

foreach($exterior_array as &$inside_array) {
                           ^- set the reference
    $inside_array['newkey'] = "hihihi";
}
unset($inside_array);
^^^^^^^^^^^^^^^^^^^^^- remove the reference

http://php.net/foreach比較

foreach($exterior_array as $k=>$inside_array) {
 $exterior_array[$k]['newkey'] = "hihihi";
}

試試這個

因為您將它用作臨時數組,所以請執行以下操作:

foreach($exterior_array as $key => $inside_array)
{
    $exterior_array[$key]['newkey'] = "hihihi";
}

或者您可以使用jpo建議的引用來完成它,這將創建一個新數組,但保持鏈接到原始(注意 ):

foreach($exterior_array as &$inside_array)
{ 
    $inside_array['newkey'] = "hihihi";
} 
foreach($exterior_array as $key => $inside_array) {
        $inside_array[$key]['newkey'] = "hihihi";
    }

使用參考的另一個解

foreach($exterior_array as &$inside_array) { 
    $inside_array['newkey'] = "hihihi";
} 

試試這個。 經過測試和驗證。

<?php
    $parentArray = array(
        array("id"=>1),
        array("id"=>2),
        array("id"=>3),
    );

    foreach($parentArray as $key=>$childArray)
    {
        $parentArray[$key]['newkey'] = "hello";
    }

    //output

    Array
    (
        [0] => Array
            (
                [id] => 1
                [newkey] => hello
            )
        [1] => Array
            (
                [id] => 2
                [newkey] => hello
            )
        [2] => Array
            (
                [id] => 3
                [newkey] => hello
            )
    )
?>

它不適合這個主題,但我在自己的項目中經常使用它。

http://pastebin.com/TyWzLWuK

它不是很高效,但易於操作。

例:

Fw_Recursive_Array_Helper::set($array, '0.someKey.someSubKey', 'value');
if(Fw_Recursive_Array_Helper::has($array, '0.someKey.someSubKey')) {
   echo Fw_Recursive_Array_Helper::get($array, '0.someKey.someSubKey'); 
}
echo Fw_Recursive_Array_Helper::get($array, '1.someKey.someSubKey', 'If the key does not exist, use this');
class helper
{

public function arrayInsert($key=NULL,$value=NULL,& $array=array())
{

if(!empty($key)&&!empty($value)&&is_array($array))
{
 $array[$key]=$value;
}
}
}

$obj=new helper();


$array=array('1'=>1,'a'=>'a');
$obj->arrayInsert('b','b',$array);
print_r($array)

o / p =>數組([1] => 1 [a] => a [b] => b)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM