PHP:从数组到字符串的关键变化

PHP: Key Changes from Array to String

我是 PHP 的新手,正在将其与 Facebook PHP SDK 一起使用。下面,我试图从 Facebook Graph API 中获取 'admin_creator' 的 'name' 字段,但是键从数组变为字符串。

foreach($getAdminCreator as $key){
    //var_export($key);
    if(isset($key['admin_creator'])){
        //var_export($key);
        //var_export($key['admin_creator']);
        foreach ($key['admin_creator'] as $key){
            //var_export($key);
            //echo $key['name'] . '<br>';
        }
    }
}

整个事情都有效,var_export(key) 会 return 一个数组,直到最后一个 foreach 循环。在进入最后一个 foreach 循环之前,var_export($key['admin_creator']); 会 return 一个这样的数组:

array ( 'name' => 'NAME', 'id' => 'ID', )array ( 'name' => 'NAME', 'id' => 'ID', )

但是,当我尝试检索 'name'、var_export($key); returns 字符串的值时,在 foreach 循环内:

'NAME''ID''NAME''ID'

并使用 echo $key['name'] . '<br>'; 只会打印第一个字符并给出非法字符串偏移警告。

因为我是 PHP 的新手,所以我想知道是否有办法解决这个问题并获取 'name' 的值。由于它 returns 作为字符串,我无法导出 'name' 字段的值。

*请注意,'name' 和 'id' 指的是字段,而 NAME 和 ID 是 'name' 和 'id' 值的替换值。

在 PHP 中,数组可以用数字索引,表现得像其他语言的传统数组,或者它们可以有字符串索引,表现得更像列表。您仍然可以使用 foreach 遍历列表,因此您的内部循环首先将 $key 设置为字符串 'NAME',然后是字符串 'ID'.

要直接访问列表的name 属性,只需使用$key['admin_creator']['name']。在您的示例中,您可以将内部循环替换为

if (isset($key['admin_creator'])) {
    echo $key['admin_creator']['name'] . '<br>';
}