我有一个将数字键作为字符串类型的PHP数组。
但是当我尝试访问它们时,PHP给了我一个未定义的索引错误。
$a = (array)json_decode('{"1":1,"2":2}');
var_dump($a);
var_dump(isset($a[1]));
var_dump(isset($a["1"]));
var_dump($a[1]);
var_dump($a["1"]);
输出:
数组(大小= 2)
'1'=>整数1
'2'=>整数2
布尔值false
布尔值false
错误:E_NOTICE:未定义的偏移量:1
空值
错误:E_NOTICE:未定义的偏移量:1
空值
如何访问这些值?
演示:http://codepad.viper-7.com/8O03IM
因此,我还没有看到其他答案可以解决这个问题,但是@xdazz接近了。
让我们开始我们的环境,它$obj
等于已解码字符串的对象表示法:
php > $obj = json_decode('{"1":1,"2":2}');
php > print_r($obj);
stdClass Object
(
[1] => 1
[2] => 2
)
php > var_dump( $obj );
object(stdClass)#1 (2) {
["1"]=>
int(1)
["2"]=>
int(2)
}
如果您要访问字符串,我们知道以下操作将失败:
php > echo $obj->1;
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `'{'' or `'$'' in php shell code on line 1
访问对象变量
您可以这样访问它:
php > echo $obj->{1};
1
这跟说的一样:
php > echo $obj->{'1'};
1
访问数组变量
数组的问题是以下代码返回空白,这是类型转换的问题。
php > echo $obj[1];
php >
如果将其回播,则可以再次访问该对象:
php > $obj = (object) $obj;
php > echo $obj->{1};
1
这是一个可以自动完成上述操作的功能:
function array_key($array, $key){
$obj = (object) $array;
return $obj->{$key};
}
用法示例:
php > $obj = (array) $obj;
php > echo array_key($obj, 1);
1
php > echo array_key($obj, 2);
2
问题内容: 是否可以在PHP数组中使用数字字符串作为键,而无需将其转换为整数? 版画 我想要 问题答案: 没有; 不,这不对: 从手册: 键可以是整数或字符串。如果键是整数的标准表示,它将被解释为整数(即“ 8”将被解释为8,而“ 08”将被解释为“ 08”)。 附录 由于下面的评论,我认为指出该行为 与 JavaScript对象键 相似 但不 相同 很有趣。
问题内容: 具体来说,我正在尝试使用字符串任意过滤ORM。我已经尝试过exec和eval解决方案,但是我遇到了麻烦。下面的代码不起作用,但这是我知道如何解释我要去的地方的最好方法 问题答案:
我有一个字符串,其中包含以下格式的项目符号•: 我需要回声显示子弹的线。我最接近打印出来的方法是创建然后回显,它可以很好地打印项目符号。 当我尝试对完整的执行同样的操作时,我没有得到任何结果,也没有错误。 以下是我对其结果输出所做的一些尝试: 结果: 当我尝试: 结果:同上。没有变化。 当我尝试: 结果:无输出。 当我尝试: 结果: 我将非常感谢帮助弄清楚如何正确地输出这一点。 多谢了。 编辑 除
问题内容: 我遇到了一个使用ID来命名类型数组的旧应用,例如… 现在,我需要对它们进行重新排序,并且a 会使得在键为整数的情况下似乎不会发生这种情况。 如果我向每个索引添加,将在键周围显示双引号,我想显示它现在是一个字符串… 这使我可以轻松地对它们进行重新排序,而无需触及更多代码。 这是 行不通的 。 A 仍将它们显示为整数数组索引。 有没有一种方法可以将键强制为字符串,这样我就可以在不破坏数组的
我还没有找到一个能解决PHP中整数到字符串转换这一方面的问题,所以 我有一个文件,其中一个字段包含一些长度为3、4或5位的数字,我需要将所有数字标准化为4位 如果数字是123、1234、12345,那么为了标准化,我在第一个数字后面加了一个零,第二个数字不加任何处理,第三个数字四舍五入:到目前为止还不错。问题在于,该文件包含一些具有有效前导零023、0234、02346的数字 我需要保留前导零,我
我们使用SQL Server数据库。当试图使用27GB内存在具有100M条记录的表上运行查询时,Hibernate会将查询(无论是