每次PHP更改键时循环多维数组

每次PHP更改键时循环多维数组,php,arrays,json,multidimensional-array,Php,Arrays,Json,Multidimensional Array,最近回到基本PHP,遇到了一个我似乎无法用JSON响应克服的绊脚石。我已经将响应转换为数组,但是数组是多维的(我想!),我想要从中提取值的数组每次都会更改其键值,因此不确定如何隔离它 下面是数组,我希望提取的值是关键字(它不断更改“garmin gps系统”、“satmap gps系统”等)、与此相关的Google位置和URL Array ( [api] => cognitiveSEO API [data] => Array (

最近回到基本PHP,遇到了一个我似乎无法用JSON响应克服的绊脚石。我已经将响应转换为数组,但是数组是多维的(我想!),我想要从中提取值的数组每次都会更改其键值,因此不确定如何隔离它

下面是数组,我希望提取的值是关键字(它不断更改“garmin gps系统”、“satmap gps系统”等)、与此相关的Google位置和URL

Array ( [api] => cognitiveSEO API [data] => Array ( [status] => success [data] => Array ( [2015-07-16] => Array ( [garmin gps systems] => Array ( [locale] => en-uk [google] => Array ( [position] => [url] => ) [bing] => Array ( [position] => 8 [url] => http://www.aboveandbeyond.co.uk/gps-and-navigation/gps-systems/garmin ) [yahoo] => Array ( [position] => 8 [url] => http://www.aboveandbeyond.co.uk/gps-and-navigation/gps-systems/garmin ) ) [satmap gps systems] => Array ( [locale] => en-uk [google] => Array ( [position] => 25 [url] => http://www.aboveandbeyond.co.uk/gps-and-navigation/satmap ) [bing] => Array ( [position] => 4 [url] => http://www.aboveandbeyond.co.uk/gps-and-navigation/gps-systems/satmap ) [yahoo] => Array ( [position] => 4 [url] => http://www.aboveandbeyond.co.uk/gps-and-navigation/gps-systems/satmap ) ) 大堆 ( [api]=>认知SEO api [数据]=>阵列 ( [状态]=>成功 [数据]=>阵列 ( [2015-07-16]=>阵列 ( [garmin gps系统]=>阵列 ( [地区]=>英国英语 [谷歌]=>阵列 ( [位置]=> [网址]=> ) [bing]=>阵列 ( [位置]=>8 [网址]=>http://www.aboveandbeyond.co.uk/gps-and-navigation/gps-systems/garmin ) [yahoo]=>数组 ( [位置]=>8 [网址]=>http://www.aboveandbeyond.co.uk/gps-and-navigation/gps-systems/garmin ) ) [卫星地图gps系统]=>阵列 ( [地区]=>英国英语 [谷歌]=>阵列 ( [位置]=>25 [网址]=>http://www.aboveandbeyond.co.uk/gps-and-navigation/satmap ) [bing]=>阵列 ( [位置]=>4 [网址]=>http://www.aboveandbeyond.co.uk/gps-and-navigation/gps-systems/satmap ) [yahoo]=>数组 ( [位置]=>4 [网址]=>http://www.aboveandbeyond.co.uk/gps-and-navigation/gps-systems/satmap ) ) 就我到目前为止的代码而言,我已经设法获取JSON,将其转换为数组,并尝试使用下面的foreach循环将这些值打印到表中,但我不确定如何引用关键字值

foreach($data as $rows) { echo ''; echo ''.$rows['??'].''; echo ''.$rows['position'].''; echo ''.$rows['url'].''; } foreach($行数据){ 回声'; 回显“.$rows[”??“]”; 回显'.$rows['position'].'; 回显'.$rows['url'].'; }
非常感谢您的任何帮助,我已经到处搜索了,但到目前为止还没有找到任何东西。

我会将该数组分配给
$arr
变量并迭代,假设有许多日期,按以下方式进行:

foreach ($arr['data']['data'] as $date => $data) {
    foreach ($data as $gps_key => $gps_data) {
        $final[$date][] = array(
            "key" => $gps_key,
            "position" => $gps_data['google']['position'],
            "url" => $gps_data['google']['url']
        );
    }
}

var_dump($final);
结果:

Array
(
    [2015-07-16] => Array
        (
            [0] => Array
                (
                    [key] => garmin gps systems
                    [position] => 
                    [url] => 
                )

            [1] => Array
                (
                    [key] => satmap gps systems
                    [position] => 
                    [url] => 
                )

        )

)

即使更改键值,您仍然可以使用
$array[0]
$array[1]
等进行迭代。

我不理解这个问题。只有
位置
url
,而且在“garmin gps系统”、“satmap gps系统”之间似乎没有变化,它们都在同一个数组中。你能澄清你的问题吗?太棒了,这很有效。你能用同一个循环从['google'中拉出['position']和['url']吗数组?是的..问题是一旦位置/url被拉出来,你想把它放在哪里。它应该放在同一个最终数组中吗?我的目标是能够访问关键字值,这要感谢你自己!位置和url值的[谷歌]要在表中显示的数组-关键字列、位置列和URL列。好的,我更新了我的答案。请尝试一下,并让我知道它是否工作完美!添加以下内容以将其打印到一个表中,该表似乎对每个($final[$date]作为$rows)都有效:{echo';echo'.$rows['key'.';echo'.$rows['position'.';echo'.$rows['URL']“;回声”;}