2014-05-20 37 views
0

我试图通过其索引访问数组,但我需要从查询字符串中获取此。尝试获取非对象的属性时试图访问数组

我已经试过:

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

这是行不通的。但这:

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

什么是'回声$ _GET [ '身份证'];'? – AbraCadaver

+0

你可以发布你的表单吗? – ksealey

+2

尝试使用'intval($ _ GET ['id'])''。它可能将'$ var'解释为字符串''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' 
} 

每次通过索引,你应该检查它是否是设置首先要避免这样的错误。

+0

仍然不起作用。同样的错误 – user3528831

0

很可能您的$_GET变量将作为string而不是integer返回,因此PHP将假定索引不存在。尝试型铸造它作为

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

这迫使PHP对待$_GET作为integer

+0

你可以自己检查一下,$ var是一个字符串还是整数$ array索引仍然会被设置。所以如果'$ id ='0'; $ arr [0] ='Hello';'通过执行'echo $ arr [$ id];'将返回'Hello' – GGio

+0

@GGio它绝对应该这样做,但我有一些问题$ _GET值不工作索引之前,类型转换似乎是唯一的(尽管有力的)解决方案 – Matt

+0

仍然无法正常工作,但我得到了同样的错误。 – user3528831

相关问题