php - foreach 的序列化数据列表
问题描述
如何列出从数据库中检索到的序列化数据。我的代码失败了。
PHP 5.6
我的数据
a:3:{i:0;a:4:{s:2:"no";i:2;s:4:"name";s:23:"file-417-1546062916.zip";s:4:"type";s:28:"application/x-zip-compressed";s:4:"size";i:31835501;}i:1;a:4:{s:2:"no";i:1;s:4:"name";s:23:"file-417-1546063067.zip";s:4:"type";s:28:"application/x-zip-compressed";s:4:"size";i:31835501;}i:2;a:4:{s:2:"no";i:3;s:4:"name";s:23:"file-417-1546063154.zip";s:4:"type";s:28:"application/x-zip-compressed";s:4:"size";i:31835501;}}
我的代码
$fileStr = $getMeta('post_files', $pID);
$list = ($fileStr) ? unserialize($fileStr) : '';
foreach ($list as $k => $v) {
echo $k.' - '.$v;
}
注意:............ 0 - Array 中的数组到字符串转换
解决方案
您有一个多维数组,这意味着您需要嵌套两个 foreach。
$str = 'a:3:{i:0;a:4:{s:2:"no";i:2;s:4:"name";s:23:"file-417-1546062916.zip";s:4:"type";s:28:"application/x-zip-compressed";s:4:"size";i:31835501;}i:1;a:4:{s:2:"no";i:1;s:4:"name";s:23:"file-417-1546063067.zip";s:4:"type";s:28:"application/x-zip-compressed";s:4:"size";i:31835501;}i:2;a:4:{s:2:"no";i:3;s:4:"name";s:23:"file-417-1546063154.zip";s:4:"type";s:28:"application/x-zip-compressed";s:4:"size";i:31835501;}}';
$list = unserialize($str);
if(!empty($list)){ // check if the array/string is empty
foreach ($list as $k => $v) {
echo $k . "\n";
foreach($v as $k2 => $val){
echo $k2.' - '.$val . "\n";
}
echo "\n\n";
}
}
输出:
0
no - 2
name - file-417-1546062916.zip
type - application/x-zip-compressed
size - 31835501
1
no - 1
name - file-417-1546063067.zip
type - application/x-zip-compressed
size - 31835501
2
no - 3
name - file-417-1546063154.zip
type - application/x-zip-compressed
size - 31835501
要查看数组的外观,您可以使用 print_r/var_dump 或 var_export。
它们将显示您的数组有多少层,如果它是未知的层数,那么您可以使用 array_walk_recursive 来遍历数组。
推荐阅读
- c# - C# 方法重载 - 2 个具有相似参数的方法
- anaconda - 蜘蛛最新版本
- javascript - 如何在 vanilla JS DOM 操作中获取 DRY 代码
- r - Tex Live - 如何在 R Studio 中使用
- c# - 如何按星期几设置另一个列表框?
- javascript - Javascript平滑滚动冲突
- vue.js - Vue 应用程序中的资产在发布到 Github 页面时未加载
- xml - XSL 模板不匹配
- arrays - 从 UITableview 中的数组中删除项目
- flutter - Dart 中的 double.infinity 和 double.maxFinite 有什么区别?