Php 通用化阵列并不是一个完美的阵列

Php 通用化阵列并不是一个完美的阵列,php,arrays,serialization,Php,Arrays,Serialization,我正在处理一些权限模块,为此,我将所有数据作为一个序列化数组。当我试图使用未序列化的显示它时,内部数组显示为null。我认为它并没有把它当作一个精确的数组。请帮我解决一些问题 这是我使用的代码 $serialisedString = 'a:3:{i:1;a:2:{s:14:"'permissionId'";s:1:"1";s:13:"'permissions&

我正在处理一些权限模块,为此,我将所有数据作为一个序列化数组。当我试图使用未序列化的显示它时,内部数组显示为
null
。我认为它并没有把它当作一个精确的数组。请帮我解决一些问题

这是我使用的代码

$serialisedString = 'a:3:{i:1;a:2:{s:14:"'permissionId'";s:1:"1";s:13:"'permissions'";a:3:{s:6:"'view'";s:1:"1";s:6:"'edit'";s:1:"1";s:8:"'delete'";s:1:"0";}}i:2;a:2:{s:14:"'permissionId'";s:1:"2";s:13:"'permissions'";a:3:{s:6:"'view'";s:1:"1";s:6:"'edit'";s:1:"1";s:8:"'delete'";s:1:"0";}}i:3;a:2:{s:14:"'permissionId'";s:1:"3";s:13:"'permissions'";a:3:{s:6:"'view'";s:1:"1";s:6:"'edit'";s:1:"1";s:8:"'delete'";s:1:"0";}}}';
$serialiceData  =   html_entity_decode($serialisedString);
$serialiceData  =   str_replace(''',"'",$serialiceData);
$permissionArray =   unserialize($serialiceData);
直到这是它看到OK,我可以选择像这样的第一个数组

print_r($permissionArray[1]);
print_r($permissionArray[1]["'permissions'"]);
但当我尝试获取一个内部值时,它显示为null

print_r($permissionArray[1]['permissions']);

请告诉我问题出在哪里,并给我一个解决方案

在第二次打印通话中,您的按键有问题

$permissionsArray的第一个字段(索引为零)是键为“permissionID”的字段。 $permissionsArray的第二个字段(索引1)是带有键“permissions”的字段

因此,您在这里所做的是调用$permissionArray[“permissions”][“permissions”]。因为此字段不存在,所以您得到的值为null:)

因此,数组的三个可能的内部值是“查看”、“编辑”、“删除”

我发现了问题, 我们必须把键作为字符串,所以我们必须把单引号也作为键。当我序列化一个post数组时,这个引用就出现了。我是这样打电话得到答案的

print_r($permissionArray[1]);
print_r($permissionArray[1]["'permissions'"]);

我不确定这是一个完美的方法。如果有人有另一个同样不起作用的解决方案

,并且我发现了问题和解决方案,请添加答案。但我不确定它是否完美