代码之家  ›  专栏  ›  技术社区  ›  Ed Marty

当用作数组键时,php如何处理数字字符串?

php
  •  1
  • Ed Marty  · 技术社区  · 15 年前

    我正在尝试创建这样的关联数组:

    $key = '0'
    $arr = array((string)$key=>$value);
    

    稍后检查 is_string(array_keys($arr)[0]) 收益率 false .

    演员阵容没有帮助,用“而不是”没有帮助。

    我是在做错事,还是有其他方法来解决这个问题,还是不可能有一个数字字符串数组键?

    4 回复  |  直到 15 年前
        1
  •  2
  •   Julian Davchev    15 年前

    PHP处理数组索引的方式比只分配给变量要特殊一些。规则清楚地写在手册中。这是关于你的问题的摘录。

    键可以是整数或字符串。如果一个键是一个整数的标准表示,它将被解释为(即,“8”将被解释为8,而“08”将被解释为“08”)。键中的浮点被截断为整数。索引数组和关联数组类型在PHP中是相同的类型,它可以包含整数索引和字符串索引。

    引用 http://php.net/manual/en/language.types.array.php

        2
  •  4
  •   Tor Valamo    15 年前

    在PHP中,如果字符串是纯数字的,那么字符串在用作索引时会转换为数字。将其指定为数组键时,它将转换为整数,在访问时也是如此,您可以使用$arr['0']访问键0。

        3
  •  1
  •   Sampson    15 年前

    设置为整数,但可作为字符串访问…

    似乎这些键将被分配为“整数”类型,除非它们的值有什么阻碍了分配。正如我用 gettype() 线。

    $array = array("0" => "Jonathan", "1" => "Sampson");
    $keys  = array_keys($array);
    print gettype((string)$keys[0]); // string
    
        4
  •  0
  •   selfawaresoup    15 年前

    将值赋给可能被解释为多个不同类型的变量时,决不依赖它们实际是特定类型。