如果我有这样的数组:
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,就不会保存这些值。
答案 0 :(得分:5)
foreach($exterior_array as $inside_array) {
$inside_array['newkey'] = "hihihi";
}
但是一旦进入foreach,就不会保存这些值。
这是因为您正在通过$inside_array
处理数组的副本。您可以通过将$inside_array
设为原始值的别名来访问要更改的“orignal”值;使用参考:
foreach($exterior_array as &$inside_array) {
^- set the reference
$inside_array['newkey'] = "hihihi";
}
unset($inside_array);
^^^^^^^^^^^^^^^^^^^^^- remove the reference
比较
答案 1 :(得分:0)
foreach($exterior_array as $k=>$inside_array) {
$exterior_array[$k]['newkey'] = "hihihi";
}
试试这个
答案 2 :(得分:0)
因为您将它用作临时数组,所以请执行以下操作:
foreach($exterior_array as $key => $inside_array)
{
$exterior_array[$key]['newkey'] = "hihihi";
}
或者您可以使用引用 jpo 建议,这将创建一个新数组,但保持与原始数组相关联(请注意& ):
foreach($exterior_array as &$inside_array)
{
$inside_array['newkey'] = "hihihi";
}
答案 3 :(得分:0)
foreach($exterior_array as $key => $inside_array) {
$inside_array[$key]['newkey'] = "hihihi";
}
答案 4 :(得分:0)
使用参考文献的另一种解决方案:
foreach($exterior_array as &$inside_array) {
$inside_array['newkey'] = "hihihi";
}
答案 5 :(得分:0)
试试这个。经过测试和验证。
<?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
)
)
?>
答案 6 :(得分:0)
它不适合这个主题,但我在自己的项目中经常使用它。
性能不高但容易处理。
示例:
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');
答案 7 :(得分:0)
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 =&gt;数组([1] =&gt; 1 [a] =&gt; a [b] =&gt; b)