删除关联数组中的键不起作用

nmo*_*ock 3 php arrays associative-array

我试图只保留某些键,并从外部API中删除其余的键.我有一个数组(http://pastebin.com/vU8T4y7h),包含对象的"数据":

foreach ($data as $media) {
    foreach (array_keys($media) as $media_key) {
        if ($media_key!=="created_time" && $media_key!=="likes" && $media_key!=="images" && $media_key!=="id") {
            unset($media[$media_key]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想只有保持created_time,likes,images,和id按键,然而,上面的代码是行不通的.任何想法为什么?任何其他优雅的解决方案实现同样的事情?

sbe*_*rry 8

这不起作用的原因是因为你没有从原始$data对象中解脱.您可以通过以下两种方式之一修复它.通过引用访问或更新您unset以对原始$data对象进行操作.

使用参考:

foreach($data as &$media) {
Run Code Online (Sandbox Code Playgroud)

取消 $data

unset($data[$media][$media_key]);
Run Code Online (Sandbox Code Playgroud)