尝试访问数组时尝试获取非对象的属性

时间:2014-05-20 20:00:49

标签: php arrays string

我试图通过索引访问数组,但我需要从查询字符串中获取此数据。

我试过了:

 $var = $_GET['id'];
 echo $xml->subway->line[$var]->name;

这不起作用。但这样做:

 echo $xml->subway->line[0]->name;

2 个答案:

答案 0 :(得分:0)

试试这个:

$var = isset($_GET['id']) ? (int)$_GET['id'] : false;

if ($var !== false && isset($xml->subway->line[$var]) {
   echo $xml->subway->line[$var]->name;
} else {
   echo 'Your problem is either "id" not being in $_GET or $xml object does not have line with that index';

   var_dump($_GET); //see what is 'id'
}

每当你通过索引从数组中获取项目时,你应该首先检查它是否设置以避免这样的错误。

答案 1 :(得分:0)

您的$_GET变量可能会以string而不是integer的形式返回,因此PHP会假设索引不存在。尝试将其类型转换为

$var = (int)$_GET['id'];

强制PHP将$_GET视为integer