PHP 在关联数组中添加一个新的键值对
PHP add a new key - value pair in associative array
您好,我需要一些帮助。我有一个这样的数组
$my_array = array(
array(
'key_1' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_2' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_3' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
),
array(
'key_1' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_2' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_3' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
),
array(
'key_1' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_2' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_3' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
),
);
我想做的是在每个内部数组项上附加一个 key_4 => value_4
,所以为了做到这一点,我使用了一个 foreach
循环,如下所示:
foreach ($my_array as $item) {
$item['key_4'] = file_get_contents($some_file);
// echo '<pre>'. print_r($item) . '</pre>'; // the new keys seems to appended properly here
}
echo '<pre>'. print_r($my_array) . '</pre>'; // the new keys are not in my array (!!!)
所以我想做的是:
$my_array = array(
array(
'key_1' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_2' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_3' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_4' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
),
array(
'key_1' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_2' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_3' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_4' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
),
array(
'key_1' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_2' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_3' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_4' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
),
);
但是如果我转储我的数组(请参阅循环外的 print_r),我不会得到新的密钥 => 对项。知道我做错了什么吗???
您需要使用主数组的当前 key
来存储新值。试试这个 -
foreach ($my_array as $key => $item) {
$my_array[$key]['key_4'] = //new value;
}
默认情况下,foreach 创建数组的副本。
要处理原件,请按参考迭代:
foreach ($my_array as &$item){ //note & char
或者使用for循环
for($i = 0; $i < count($my_array); $i++){
$my_array[$i]['key_4'] = file_get_contents($some_file);
或者您可以使用 array_map
:
$my_array = array_map(function($item){
$item['key_4'] = file_get_contents($some_file);
return $item;
}, $my_array);
这将用修改后的副本覆盖原始数组,因此性能可能比其他两个选项更差
您好,我需要一些帮助。我有一个这样的数组
$my_array = array(
array(
'key_1' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_2' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_3' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
),
array(
'key_1' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_2' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_3' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
),
array(
'key_1' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_2' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_3' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
),
);
我想做的是在每个内部数组项上附加一个 key_4 => value_4
,所以为了做到这一点,我使用了一个 foreach
循环,如下所示:
foreach ($my_array as $item) {
$item['key_4'] = file_get_contents($some_file);
// echo '<pre>'. print_r($item) . '</pre>'; // the new keys seems to appended properly here
}
echo '<pre>'. print_r($my_array) . '</pre>'; // the new keys are not in my array (!!!)
所以我想做的是:
$my_array = array(
array(
'key_1' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_2' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_3' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
'key_4' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
),
array(
'key_1' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_2' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_3' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
'key_4' => 'Integer lorem quam, adipiscing condimentum tristique vel, eleifend sed turpis.',
),
array(
'key_1' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_2' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_3' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
'key_4' => 'Pellentesque cursus arcu id magna euismod in elementum purus molestie.',
),
);
但是如果我转储我的数组(请参阅循环外的 print_r),我不会得到新的密钥 => 对项。知道我做错了什么吗???
您需要使用主数组的当前 key
来存储新值。试试这个 -
foreach ($my_array as $key => $item) {
$my_array[$key]['key_4'] = //new value;
}
默认情况下,foreach 创建数组的副本。
要处理原件,请按参考迭代:
foreach ($my_array as &$item){ //note & char
或者使用for循环
for($i = 0; $i < count($my_array); $i++){
$my_array[$i]['key_4'] = file_get_contents($some_file);
或者您可以使用 array_map
:
$my_array = array_map(function($item){
$item['key_4'] = file_get_contents($some_file);
return $item;
}, $my_array);
这将用修改后的副本覆盖原始数组,因此性能可能比其他两个选项更差