Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 无法访问数组键_Php_Arrays_Key - Fatal编程技术网

Php 无法访问数组键

Php 无法访问数组键,php,arrays,key,Php,Arrays,Key,我对数组的键有点问题。 该数组如下所示: Array ( [1] => Array ( ["question"] => test question 1 ["open_response"] => 1 ) [2] => Array ( ["question"] => test question 2 ["yes_

我对数组的键有点问题。 该数组如下所示:

Array
(
    [1] => Array
        (
            ["question"] => test question 1
            ["open_response"] => 1
        )

    [2] => Array
        (
            ["question"] => test question 2
            ["yes_no"] => 1
        )

)
<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);
?>
但出于某种原因,每当我试图访问
$data['1']['question']
时,它都会告诉我,question不是索引。我有点困惑,因为它应该是一个关键,但不是,我如何才能解决这个问题?或者如何访问它?

您想要:

$data[1]['question']
不是:

编辑: 我的回答并没有解决他的问题,而是帮助他找到了真正的问题。上面的两个片段是完全相同的,因为如果字符串是有效的整数,PHP会将字符串键转换为整数。在我看来,这简直让人困惑。如果我用一个字符串为数组设置了键,dag`namit应该用一个字符串为它设置键,即使该字符串也可以解析为int

相关文档可在以下位置找到:

键可以是整数或字符串。该值可以是任何类型

此外,还会发生以下关键点强制转换:

  • 包含有效整数的字符串将强制转换为整数类型。例如,键“8”实际上将存储在8下。另一方面,“08”不会被强制转换,因为它不是有效的十进制整数。
  • 浮点数也被转换为整数,这意味着小数部分将被截断。例如,键8.7实际上将存储在8下
  • 布尔值也被转换为整数,即键true实际上存储在1下,键false存储在0下
  • Null将被强制转换为空字符串,即Null键将实际存储在“”下
  • 数组和对象不能用作键。这样做将导致警告:偏移类型非法
  • 你想要:

    $data[1]['question']
    
    不是:

    编辑: 我的回答并没有解决他的问题,而是帮助他找到了真正的问题。上面的两个片段是完全相同的,因为如果字符串是有效的整数,PHP会将字符串键转换为整数。在我看来,这简直让人困惑。如果我用一个字符串为数组设置了键,dag`namit应该用一个字符串为它设置键,即使该字符串也可以解析为int

    相关文档可在以下位置找到:

    键可以是整数或字符串。该值可以是任何类型

    此外,还会发生以下关键点强制转换:

  • 包含有效整数的字符串将强制转换为整数类型。例如,键“8”实际上将存储在8下。另一方面,“08”不会被强制转换,因为它不是有效的十进制整数。
  • 浮点数也被转换为整数,这意味着小数部分将被截断。例如,键8.7实际上将存储在8下
  • 布尔值也被转换为整数,即键true实际上存储在1下,键false存储在0下
  • Null将被强制转换为空字符串,即Null键将实际存储在“”下
  • 数组和对象不能用作键。这样做将导致警告:偏移类型非法

  • 您的阵列从何处提供? 数组索引可能有不可见的字符(由编辑器、浏览器等使用),如退格或null(\0)字符。在var_dump上看不到这些字符

    看看这个例子: 代码:


    您可以使用一些数组函数,如:array\u value、array\u map来重新构建和验证您的数组。

    您的数组从何处提供? 数组索引可能有不可见的字符(由编辑器、浏览器等使用),如退格或null(\0)字符。在var_dump上看不到这些字符

    看看这个例子: 代码:


    您可以使用一些数组函数,如:array\u values、array\u map来重新构建和验证您的数组。

    确定吗?我对它进行了测试,
    $data['1']['question']
    返回
    文本问题1
    。谢谢,伙计,有时候我们程序员需要额外的眼睛。。。这是一个愚蠢的错误,我从昨晚开始一直在编码,我想我需要休息一下,谢谢你:)测试这个
    $data[1]['question']='test';echo$data['1']['question']
    @TheManiac如果它们不一样,为什么
    数组(0=>“零”,1=>“一”,“1”=>“一个字符串”)
    会创建一个2元素数组而不是3元素数组?(我不是想证明你错了,我只是糊涂了)@TheManiac哇,我以前从未意识到这一点。谢谢你的解释!你确定吗?我对它进行了测试,
    $data['1']['question']
    返回
    文本问题1
    。谢谢,伙计,有时候我们程序员需要额外的眼睛。。。这是一个愚蠢的错误,我从昨晚开始一直在编码,我想我需要休息一下,谢谢你:)测试这个
    $data[1]['question']='test';echo$data['1']['question']
    @TheManiac如果它们不一样,为什么
    数组(0=>“零”,1=>“一”,“1”=>“一个字符串”)
    会创建一个2元素数组而不是3元素数组?(我不是想证明你错了,我只是糊涂了)@TheManiac哇,我以前从未意识到这一点。谢谢你的解释!您确定准确定义了该数组,然后键入了
    $data['1']['question']
    ?你能显示完整的代码吗?!您确定准确定义了该数组,然后键入了
    $data['1']['question']
    ?你能显示完整的代码吗?!
    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"
    }