2012-03-17 50 views
0
$ar['123'] = "test"; 
    var_dump($ar); // Key is int 
    $ar2['123a'] = "test"; 
    var_dump($ar2); //Key is string 

这究竟是为什么?有没有解决办法?我想把一个数字键作为一个字符串,而不是一个整数。作为数组键,为什么一串数字会变成字符串?

日Thnx

+3

看到这个重复的解释:http://stackoverflow.com/questions/4100488/a-numeric-string-as-array -key-in-php – 2012-03-17 02:36:31

+0

噢好吧谢谢你:)似乎我没有足够的搜索。 – 2012-03-17 02:38:49

+0

似乎只用整数做它小于或等于2147483647 – 2012-03-17 02:43:39

回答

0

在需要时可以使用 “123” 作为一个数字。也可以将substr或strlen“123”作为字符串。 PHP变量是灵活的。

0

你不必担心在PHP中的数据类型,则转换会为您自动完成。

只给你一个例子,下面的代码:

<?php 
     if("10" == 10) 
     { 
       echo "It's equal!"; 
     } 
?> 

将实际输出:

这等于!

您可以在这里的行动看出来:http://ideone.com/aayLx

底线是:不担心,PHP将把它作为一个字符串,当你需要它。

+0

是的,我知道,我的问题是,我想这是一个字符串,因为我编码阵列JSON后者又怪异的事情发生了:P – 2012-03-17 02:43:40

+0

好,奇怪的事情不应该发生。你可以再详细一点吗? – 2012-03-17 02:44:25

+1

它确定我找到问题所在。 Json与此无关。我在对它进行编码之前对它进行反转,但是我忘了将第二个参数设置为true以便保留数组的键。 – 2012-03-17 02:52:15

0

您可以强制转换的关键字符串,但它最终会被转换为整数,由于PHP的松散打字。从手册http://php.net/manual/en/language.types.array.php

密钥可以是整数或字符串。如果一个密钥是一个整数的标准 表示,但是将被解释为这样的(即“8” 将被解释为8,而“08”将被解释为“08”)。当字符串是整数

相关问题