[英]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
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
)
)
?>
它不適合這個主題,但我在自己的項目中經常使用它。
它不是很高效,但易於操作。
例:
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.