为什么 foreach 数组没有按预期执行并且没有生成所需的输出?我犯了什么错误?



我有一个标题为$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 可以修改数组,而无需遍历所有维度。

最新更新