Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试访问数组时尝试获取非对象的属性_Php_Arrays_String - Fatal编程技术网

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

Php 尝试访问数组时尝试获取非对象的属性,php,arrays,string,Php,Arrays,String,我试图通过数组的索引来访问它,但我需要从查询字符串中获取它 我试过: $var = $_GET['id']; echo $xml->subway->line[$var]->name; 那不行。但这确实: echo $xml->subway->line[0]->name; 试试这个: $var = isset($_GET['id']) ? (int)$_GET['id'] : false; if ($var !== false &&

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

我试过:

 $var = $_GET['id'];
 echo $xml->subway->line[$var]->name;
那不行。但这确实:

 echo $xml->subway->line[0]->name;
试试这个:

$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'
}

每次按索引从数组中获取项时,您应该首先检查它是否是,以避免类似错误。

很可能您的
$\u GET
变量返回时是
字符串
而不是
整数
,因此PHP将假设该索引不存在。尝试将其类型转换为

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

这迫使PHP将
$\u GET
视为
整数

什么是
echo$\u GET['id']?您可以发布您的表单吗?尝试使用
intval($\u GET['id'])
。它可能会将
$var
解释为字符串
'0'
。@RahilWazir不管它是字符串还是整数,只要它在数组中的集合PHP会找到它。@GGio是的,这并不重要。但是如果未设置
$\u GET['id']
,它仍将返回
0
。您可以自己检查$var是字符串还是整数$array index仍将被设置。所以如果
$id='0'$arr[0]=“你好”通过执行
echo$arr[$id]
将返回
Hello
@GGio它肯定应该这样做,但是我以前遇到过一些问题,$\u GET值不能作为索引使用,类型转换似乎是唯一的(尽管是强制的)solution@user3528831我刚刚设置了自己的测试,执行
intval($\u GET['id'])
(int)$\u GET['id']
都正常工作,您能用xml结构更新答案吗?