问题
I have a pretty basic question but I am stuck. I am pretty new to php and I have an array like this:
$array = array(
'one' => 1,
'two' => array('key1' => 'val1','key2' => 'val2'),
'three' => array('key1' => 'val1','key2' => 'val2'),
'four' => array('key1' => 'val1','key2' => 'val2')
);
and for each of the arrays in the array (that is, 'two, 'three', and 'four'), I want to insert 'key3' => 'val3' into those arrays.
I tried this:
foreach($array as $item) {
if (gettype($item) == "array") {
$item['key3'] = 'val3';
}
}
But it doesn't work, and I'm not sure why. Using various print_r's all over the place, it seems to insert 'key3' => 'val3' into $item if I print it out in the loop, but the original array seems unchanged. I also tried a regular for loop but that didn't work either.
回答1:
foreach works with a copy of $item, so you cannot modify your original array inside the foreach. One way to work around this is to use the & operator.
foreach($array as &$item) {
if (is_array($item)) {
$item['key3'] = 'val3';
}
}
Another, more elegant way would be to use array_walk():
array_walk($array, function (&$v, $k) {
if (is_array($v)) {
$v['key3'] = 'val3';
}
});
This example will work from PHP 5.3, where Closures were introduced.
回答2:
PHP has a function to check whether a variable is an array or not: is_array(). Use this:
if (is_array($item)) { ...
回答3:
while looping with foreach use key like :
foreach($array as $key => $item){
$array[$key]['newElement'] = "newValue";
}
来源:https://stackoverflow.com/questions/16491704/php-insert-value-into-array-of-arrays-using-foreach