我正在尝试构建一个数组结构,以便更容易地获取数据。也许有人能帮我?
如何将值作为键值从另一个数组插入到其中?
$pers = [
'2019/Herbert',
'2019/Wolfgang',
'2020/Doris',
'2020/Musti',
];表示文件路径的多维数组
function parse_paths_of_files($array) {
rsort($array);
$result = array();
foreach ($array as $item) {
$parts = explode('/', $item);
$current = &$result;
include 'parentdir/'.$item.'/data.php';
//echo $article['date']; // example: 2020-05-06
for ($i = 1, $max = count($parts); $i < $max; $i++) {
if (!isset($current[$parts[$i - 1]])) {
$current[$parts[$i - 1]] = array();
}
$current = &$current[$parts[$i - 1]];
}
$last = end($parts);
if (!isset($current[$last]) && $last) {
// Don't add a folder name as an element if that folder has items
$current[] = end($parts);
}
}
return $result;
}
echo '<pre>'; print_r(parse_paths_of_files($pers)); echo '</pre>';自动索引结果:
Array
( // by rsort($array);
[2020] => Array
(
[0] => Herbert
[1] => Wolfgang
)
[2019] => Array
(
[0] => Doris
[1] => Musti
)
)我想以包括的日期(2020-05-06)为重点:
Array
(
// by rsort($array);
[2020] => Array
( // by rsort(???);
[2020-12-06] => Herbert
[2020-10-09] => Wolfgang
[2020-05-19] => Andy
)
[2019] => Array
(
[2019-12-22] => Doris
[2019-10-02] => Musti
[2019-01-21] => Alex
[2019-01-20] => Felix
)
)谢谢你的回答,因为我是个初学者,并不是什么都懂,所以我很难正确地提出或准备问题。就这样吧!来自维也纳的问候!
发布于 2020-05-13 17:43:21
假设$artilce['date']是在包含的文件中定义的,这就构建了正确的结构。您可能需要检查日期,如果没有,则将其设置为其他值。另外,请记住,如果不止一篇文章有相同的日期,那么只有最后出现在$pers数组中的一篇文章的结果是:
function parse_paths_of_files($paths, &$array=array()) {
foreach($paths as $path) {
include "parentdir/$path/data.php";
$path = explode('/', $path);
$value = array_pop($path);
$temp =& $array;
foreach($path as $key) {
$temp =& $temp[$key];
}
$temp[$article['date']] = $value;
}
}
parse_paths_of_files($pers, $result);基于我对类似How to access and manipulate multi-dimensional array by key names / path?的回答。
在所有这些之后,如果有同样的警告,我认为您现有代码中的这个更改会有效的:
$current[$article['date']] = end($parts);https://stackoverflow.com/questions/61778327
复制相似问题