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结构更新答案吗?