Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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 Can';t使用变量指定索引来访问数组中的值_Php - Fatal编程技术网

Php Can';t使用变量指定索引来访问数组中的值

Php Can';t使用变量指定索引来访问数组中的值,php,Php,我有以下代码: $id = $_GET['id']; echo '<br>' . 'id: ' . $id . '<br><br>'; echo '<pre>'; print_r($itemQtys); echo '</pre>'; echo '<br>' . 'itemqtys[id]: ' . $itemQtys[$id] . '<br>'; echo '<br>'

我有以下代码:

$id = $_GET['id'];

echo '<br>' . 'id: ' . $id . '<br><br>';

echo '<pre>';
            print_r($itemQtys);
echo '</pre>';

echo '<br>' . 'itemqtys[id]: ' . $itemQtys[$id] . '<br>';

echo '<br>' . 'id: ' . $id . '<br>';
$id=$\u GET['id'];
回音“
”id:'$身份证。”

'; 回声'; 打印($itemQtys); 回声'; 回音“
”itemqtys[id]:'$itemQtys[$id]。'
'; 回音“
”id:'$身份证。”
';
输出为:

身份证号码:5

数组

[5] =>12
)

itemqtys[id]:

身份证号码:5

如您所见,当我尝试使用$id变量作为键访问数组中的值时,没有返回任何值。但是,当我这样做时:

echo'
'itemqtys[5]:'$itemQtys[5]。'
';
结果是:

itemqtys[5]:12


为什么我不能使用变量来指定数组中的索引?

调试时使用var\u dump()检查值。注意,var dump告诉您字符串长度。右键单击>调试时查看html源代码


我猜$id是一个字符串,后面有空格字符

$id
可能不包含您期望的内容,请先将其转换为整数

将第一行更改为:

$id=(int)$\u GET['id']


$\u GET['id']
返回一个字符串,在将其用作数组索引之前,必须将其强制转换为
int

其中是
$id
?在你的例子中没有设置任何内容。你是如何创造它的?我不认为它是如何获得的是相关的,因为我展示了它的价值。不过,为了回答您的问题,我更新了我的问题:它作为GET值传递。
ini\u set('display\u errors',1)
在脚本开始时(或阅读错误日志),您可能会看到一条警告,指出
$id
并非您所期望的那样。php会自动将数组键的字符串转换为int(反之亦然)。“在将其传递给你的数组之前,你必须将其转换为int。”--不,他们不必:@zerkms,我认为你不完全正确。如果您访问像
$itemQtys['5']
这样的数组,它将被正确地强制转换。但是如果有空格(这在用户输入中完全可能),它不会强制转换值,而是将其视为字符串:
$itemQtys['5']
。因此,修剪或更好地铸造用户输入不是一个坏主意@zerkms你是对的,但在我看来,当你知道你需要一个整数时,使用字符串似乎是一种不好的做法。@Ctechnology:是的,但回答者没有明确说明这一点,并说必须强制转换为整数,但没有解释原因。没有这样的例子,答案本身看起来就不正确。“因此,调整或更好地转换用户输入并不是一个坏主意”--这是一个好主意,但不是一个要求。ilanco-感谢您提出的关于类型转换GET值的建议。我想我会从现在开始这样做,以防止这个问题再次发生。谢谢。“我猜$id是一个字符串,后面有空格字符”听起来对我来说很有答案(而且很可能是错误)。我觉得我的答案其实很好——我都教如何钓鱼,还教了一条鱼。“我觉得我的答案其实很好——我都教如何钓鱼,还教了一条鱼。”哈哈!是的,你的回答很好。非常感谢。我通过函数is_numeric()检查id是否是一个数字,但显然在PHP中,某些东西仍然可以是一个数字,即使前面有空格!谢谢
echo '<br>' . 'itemqtys[5]: ' . $itemQtys[5] . '<br>';