首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在当前数组中插入不同的数组值作为键?

在当前数组中插入不同的数组值作为键?
EN

Stack Overflow用户
提问于 2020-05-13 15:17:06
回答 1查看 52关注 0票数 1

我正在尝试构建一个数组结构,以便更容易地获取数据。也许有人能帮我?

如何将值作为键值从另一个数组插入到其中?

代码语言:javascript
复制
$pers = [
  '2019/Herbert',
  '2019/Wolfgang',
  '2020/Doris',
  '2020/Musti',
];

表示文件路径的多维数组

代码语言:javascript
复制
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>';

自动索引结果:

代码语言:javascript
复制
Array
(   // by rsort($array);
    [2020] => Array
        (
            [0] => Herbert
            [1] => Wolfgang
        )

    [2019] => Array
        (
            [0] => Doris
            [1] => Musti
        )
)

我想以包括的日期(2020-05-06)为重点:

代码语言:javascript
复制
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
        )
)

谢谢你的回答,因为我是个初学者,并不是什么都懂,所以我很难正确地提出或准备问题。就这样吧!来自维也纳的问候!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 17:43:21

假设$artilce['date']是在包含的文件中定义的,这就构建了正确的结构。您可能需要检查日期,如果没有,则将其设置为其他值。另外,请记住,如果不止一篇文章有相同的日期,那么只有最后出现在$pers数组中的一篇文章的结果是:

代码语言:javascript
复制
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?的回答。

在所有这些之后,如果有同样的警告,我认为您现有代码中的这个更改会有效的:

代码语言:javascript
复制
$current[$article['date']] = end($parts);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61778327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档