我正在努力弄清楚如何最好地拆分我拥有的一些数据。无论是分成多个单独的数组,还是嵌套数组,还是不同的东西。
我有一个文件,其中包含许多不同项目的标题,文件名和日期。每个项目都使用字符^
分隔,列表的每个部分都以波浪号~
该文件看起来像这样:
Example post one~example-post-one~Friday 17 October 2014^
Wayfinding For The Mobile Web~wayfinding-for-the-mobile-web~Friday 17 October 2014^
我创建了一个函数,它使用^
作为分隔符来抓取数据并将其分成数组:
function getPostList(){
$masterposts = "../posts/master-allposts.txt";
$current = file_get_contents($masterposts);
$masterpostlist = explode('^', $current);
return $masterpostlist;
}
结果是这样的:
array(3) { [0]=> string(46) "Example post one~example-post-one~Friday 17 October 2014" [1]=> string(83) " Wayfinding For The Mobile Web~wayfinding-for-the-mobile-web~Friday 17 October 2014" [2]=> string(0) "" }
但是我现在正试图进一步分解该数组,以便我可以为每个输出所有单独的部分。理想情况下为字符串变量$title, $filename and $publishdate
我做到了这一点,但我认为我遇到了问题,因为我每次都可能覆盖数组。你会怎么做?
foreach ($masterpostlist as $post){
$postParts = explode('~',$post);
var_dump($postParts);
}
答案 0 :(得分:0)
只需将原始未爆炸变量替换为爆炸变量,即可“转换”已有阵列。
foreach ($masterpostlist as &$post){
$post = explode('~',$post);
}
这使用引用&
运算符,并允许foreach循环内的代码更改循环的变量。另外,它只会改变循环中使用的临时副本。
在你的函数中,它将像这样使用:
function getPostList(){
$masterposts = "../posts/master-allposts.txt";
$current = file_get_contents($masterposts);
$masterpostlist = explode('^', $current);
foreach ($masterpostlist as &$post){
$post = explode('~',$post);
}
return $masterpostlist;
}