我对数组的键有一点问题.该数组如下所示:
Array
(
[1] => Array
(
["question"] => test question 1
["open_response"] => 1
)
[2] => Array
(
["question"] => test question 2
["yes_no"] => 1
)
)
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,每当我尝试访问$data['1']['question']它时,告诉我问题不是索引.我对此有点困惑,因为它应该是关键但不是,我该如何解决这个问题?或者我如何访问它?
你要:
$data[1]['question']
Run Code Online (Sandbox Code Playgroud)
不:
$data['1']['question']
Run Code Online (Sandbox Code Playgroud)
我的回答并没有解决他的问题,而是帮助他找到了实际的问题.上面的两个片段完全相同,因为如果字符串是有效整数,PHP会将字符串键转换为整数.国际海事组织,它令人困惑如地狱.如果我使用字符串键入我的数组,dag`nammit它应该用字符串键入,即使该字符串也可以解析为int!
相关文档可在此处找到:
密钥可以是整数或字符串.值可以是任何类型.
此外,还会发生以下关键演员:
- 包含有效整数的字符串将强制转换为整数类型.例如,键"8"实际上将存储在8下.另一方面,"08"将不会被转换,因为它不是有效的十进制整数.
- 浮点数也会转换为整数,这意味着小数部分将被截断.例如,密钥8.7实际上将存储在8下.
- Bool也会被转换为整数,即键值true实际上将存储在1下,键值false则在0下.
- Null将被转换为空字符串,即键null实际上将存储在""下.
- 数组和对象不能用作键.这样做会导致警告:非法偏移类型.