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'"]);
我不确定这是一个完美的方法。如果有人有另一个同样不起作用的解决方案,并且我发现了问题和解决方案,请添加答案。但我不确定它是否完美