$ar['123'] = "test";
var_dump($ar); // Key is int
$ar2['123a'] = "test";
var_dump($ar2); //Key is string
这究竟是为什么?有没有解决办法?我想把一个数字键作为一个字符串,而不是一个整数。作为数组键,为什么一串数字会变成字符串?
日Thnx
$ar['123'] = "test";
var_dump($ar); // Key is int
$ar2['123a'] = "test";
var_dump($ar2); //Key is string
这究竟是为什么?有没有解决办法?我想把一个数字键作为一个字符串,而不是一个整数。作为数组键,为什么一串数字会变成字符串?
日Thnx
在需要时可以使用 “123” 作为一个数字。也可以将substr或strlen“123”作为字符串。 PHP变量是灵活的。
你不必担心在PHP中的数据类型,则转换会为您自动完成。
只给你一个例子,下面的代码:
<?php
if("10" == 10)
{
echo "It's equal!";
}
?>
将实际输出:
这等于!
您可以在这里的行动看出来:http://ideone.com/aayLx
底线是:不担心,PHP将把它作为一个字符串,当你需要它。
是的,我知道,我的问题是,我想这是一个字符串,因为我编码阵列JSON后者又怪异的事情发生了:P – 2012-03-17 02:43:40
好,奇怪的事情不应该发生。你可以再详细一点吗? – 2012-03-17 02:44:25
它确定我找到问题所在。 Json与此无关。我在对它进行编码之前对它进行反转,但是我忘了将第二个参数设置为true以便保留数组的键。 – 2012-03-17 02:52:15
您可以强制转换的关键字符串,但它最终会被转换为整数,由于PHP的松散打字。从手册http://php.net/manual/en/language.types.array.php
密钥可以是整数或字符串。如果一个密钥是一个整数的标准 表示,但是将被解释为这样的(即“8” 将被解释为8,而“08”将被解释为“08”)。当字符串是整数
自动浇铸为整数。有关详细信息,请参阅http://php.net/manual/en/language.types.array.php。
要解决此问题,你必须在前面加上一个0整数:
$ar2["0123"] will use '123' as the key
看到这个重复的解释:http://stackoverflow.com/questions/4100488/a-numeric-string-as-array -key-in-php – 2012-03-17 02:36:31
噢好吧谢谢你:)似乎我没有足够的搜索。 – 2012-03-17 02:38:49
似乎只用整数做它小于或等于2147483647 – 2012-03-17 02:43:39