首页  >  问答  >  正文

如何解决php数字键名会被强转成整型的问题?

  1. 问题描述

$result = [
    '12w'=>'大扫除',
    '3.3'=>' 搜索 ',
    '456' => '333',
    789 => 1266
];

var_dump($result);

/*
result is :
*********************
array(4) {
  ["12w"]=>
  string(9) "大扫除"
  ["3.3"]=>
  string(8) " 搜索 "
  [456]=>
  string(3) "333"
  [789]=>
  int(1266)
}
*/

2.尝试解决方案(均不生效):
①加单引号、双引号 如'456' => '333'
②用string强转 如(string)789 => 1266
③用strval强转 如strval(789) => 1266

$result1 = [
    '12w'=>'大扫除',
    '3.3'=>' 搜索 ',
    '456' => '333',
    (string)789 => 1266
];
$result2 = [
    '12w'=>'大扫除',
    '3.3'=>' 搜索 ',
    '456' => '333',
    strval(789) => 1266
];


烟雨江南烟雨江南2736 天前1382

全部回复(3)我来回复

  • 数据分析师

    数据分析师2017-10-01 01:08:24

    如何解决php数字键名会被强转成整型的问题?-PHP中文网问答-如何解决php数字键名会被强转成整型的问题?-PHP中文网问答

    围观一下哦,学习一下。

    回复
    0
  • 大家讲道理

    大家讲道理2017-03-25 13:48:03

    PHP 数组可以同时含有 integer 和 string 类型的键名,因为 PHP 实际并不区分索引数组和关联数组。只要是数字型字符串都会转换为数字

    回复
    0
  • 迷茫

    迷茫2017-03-25 09:14:33

    PHP 数组可以同时含有 integer 和 string 类型的键名,因为 PHP 实际并不区分索引数组和关联数组。只要是数字型字符串都会转换为数字

    key 会有如下的强制转换:

    包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
    浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
    布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
    Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。
    数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type

    回复
    0
  • 取消回复