我有一个标题为$allFeeds
的大数组,如下所示:
Array
(
[custom_data_cache] => Array
(
[answer] => Array
(
[0] => Array
(
[answer_id] => 289
[poll_id] => 115
[answer] => Let's meet now
[total_votes] => 0
[ordering] => 1
[vote_percentage] => 0
)
[1] => Array
(
[answer_id] => 290
[poll_id] => 115
[answer] => Let's plan sometime later
[total_votes] => 0
[ordering] => 2
[vote_percentage] => 0
)
)
)
)
我想在最['answer']
键的内部键中生成值,而不是在外部['answer']
键空白(在上面的数组中存在两个这样的元素),但我无法做到这一点。
以下是我尝试的代码,但数组根本没有改变。
foreach ($allFeeds['custom_data_cache']['answer'] as $key => $value) {
$key[$value]['answer'] = '';
}
print_r($allFeeds);
再次打印相同的阵列。预期输出如下:
Array
(
[custom_data_cache] => Array
(
[answer] => Array
(
[0] => Array
(
[answer_id] => 289
[poll_id] => 115
[answer] =>
[total_votes] => 0
[ordering] => 1
[vote_percentage] => 0
)
[1] => Array
(
[answer_id] => 290
[poll_id] => 115
[answer] =>
[total_votes] => 0
[ordering] => 2
[vote_percentage] => 0
)
)
)
)
请帮助我纠正我在数组操作中犯的错误。
您的本地(对于循环)变量$key
仅保存索引,而不是对该索引下的元素(数组)的引用,并且$value
保存该元素(数组)的副本。赋值$key[$value]['answer'] = '';
在很多层面上都是错误的(语法上和语义上)。顺便说一下,你的error_reporting关了吗?
从而改变
foreach ($allFeeds['custom_data_cache']['answer'] as $key => $value) {
$key[$value]['answer'] = '';
}
自
foreach ($allFeeds['custom_data_cache']['answer'] as $key => $value) {
$allFeeds['custom_data_cache']['answer'][$key]['answer'] = '';
}
您可以轻松地将最内部的最answer
值设置为空字符串,如下所示:
foreach ($allFeeds['custom_data_cache']['answer'] as &$value) {
$value['answer'] = '';
}
print_r($allFeeds);
使用 &value
可以修改数组,而无需遍历所有维度。