阵列密钥无法加密
问题描述:
我有一个数组的关键问题。 数组是这样的:阵列密钥无法加密
Array
(
[1] => Array
(
["question"] => test question 1
["open_response"] => 1
)
[2] => Array
(
["question"] => test question 2
["yes_no"] => 1
)
)
但由于某些原因,每当我试图访问$data['1']['question']
它告诉我,问题是不是一个索引。我有点困惑,因为它应该是一个关键,但不是,我该如何解决这个问题?或者我如何访问它?
答
你想:
$data[1]['question']
不:
$data['1']['question']
编辑:
我的回答没有解决他的问题,而是帮他找到实际的问题。上面的两个片段是正好是,因为如果字符串是有效整数,PHP会将字符串键转换为整数。海事组织,它令人迷惑不解。如果我用字符串键入我的数组,那么即使该字符串也可以被解析为一个int,它应该用一个字符串键入。
相关文件可以发现here:
密钥可以是一个整数或字符串。该值可以是任何类型。
此外以下项石膏将发生:
- 含有有效整数字符串将被强制转换为整数类型。例如。键“8”实际上将被存储在8以下。另一方面,“08”不会被转换,因为它不是有效的十进制整数。
- 浮点数也被转换为整数,这意味着小数部分将被截断。例如。关键8.7实际上将存储在8
- BOOLS被转换为整数,也即真正的关键实际保存在1和0下
- 关键错误的零将转换为空字符串,即密钥null实际上将被存储在“”之下。
- 数组和对象不能用作键。这样做会导致警告:非法偏移类型。
答
您的阵列从哪里提供? 数组索引可能不可见(通过您的编辑器,浏览器等)字符,如退格或null(\ 0)字符。您无法在var_dump上看到这些字符。
看看这个例子: 代码:
<pre>
<?php
$a = array(
"\0question\0" => "test question 1",
"question\0" => "test question 2",
"\0question" => "test question 3",
"question" => "test question 4"
);
var_dump($a);
?>
输出:
array(4) {
["question"]=>
string(15) "test question 1"
["question"]=>
string(15) "test question 2"
["question"]=>
string(15) "test question 3"
["question"]=>
string(15) "test question 4"
}
你可以使用一些阵列功能,如:array_values,array_map到rebuil和验证您的阵列。
你确定你准确的定义了这个数组,然后你键入'$ data ['1'] ['question']'?你能显示完整的代码吗?! – 2013-04-08 19:30:08