在多维数组中查找现有关键字


Finding an existing key in multi-dim array

所以遇到了一个小问题,我已经尽力解决了,但没有成功。我有一个Facebook应用程序,它可以访问签入信息,并通过API在多维数组中生成JSON输出。我是用PHP编写代码的。

我遇到的问题是,并不是每个签入都有坐标/位置信息(纬度/经度),所以它会在页面上返回一个错误。

我想浏览信息数组,找出密钥是否存在和/或其中是否包含任何信息。

foreach ($checkins['data'] as $checkin) {
      echo ("<p>{$checkin['place']['location']['latitude']}</p>");
      echo ("<p>{$checkin['place']['location']['longitude']}</p>");
}

这是我使用的代码,但就像我说的那样,如果没有任何位置信息,我就会出错。有人知道我如何解决这个问题吗?或者有没有一种简单的方法可以循环并找出特定的密钥是否存在?

任何帮助都将不胜感激!

谢谢!

使用isset():检查您要查找的内容是否存在

foreach ($checkins['data'] as $checkin) {
      if(isset($checkin['place']) 
         && isset($checkin['place']['location'])
         && isset($checkin['place']['location']['latitude'])
         && isset($checkin['place']['location']['longitude'])
      ) {
           echo ("<p>{$checkin['place']['location']['latitude']}</p>");
           echo ("<p>{$checkin['place']['location']['longitude']}</p>");
      }
}

试试这个:

foreach ($checkins['data'] as $checkin) {
     if ( array_key_exists( 'place', $checkin ) &&
          array_key_exists( 'location', $checkin['place'] ) &&
          array_key_exists( 'latitude', $checkin['place']['location'] ) &&
          array_key_exists( 'longitude', $checkin['place']['location'] )
        ) 
     {
         echo ("<p>{$checkin['place']['location']['latitude']}</p>");
         echo ("<p>{$checkin['place']['location']['longitude']}</p>");
    }
}