【问题标题】:PHP array questionPHP数组问题
【发布时间】:2011-06-06 01:11:38
【问题描述】:

这更多是关于 PHP 和数组的内置功能的概念性问题。我想知道是否有任何方法可以做到以下几点:

您有一个数组 $a,并且此数组包含 5 个元素 (0-4) 用于本示例。

有什么方法可以创建一个新数组,其中包含以下内容:

  $b[0] = $a[0];
  $b[1] = $a[0] + $a[1];
  $b[2] = $a[0] + $a[1] + $a[2];
  $b[3] = $a[0] + $a[1] + $a[2] + $a[3]; 
  $b[4] = $a[0] + $a[1] + $a[2] + $a[3] + $a[4];
  etc..

我想它的使用示例是网站上的面包屑,您可以在其中单击给定链接的任何目录,例如 /dir1/dir2/dir3/dir4

有没有内置在 PHP 中的东西可以处理以这种方式构建数组?或者处理这个的函数的例子?甚至是更好的解决方法。

谢谢!

编辑:这是在你们的帮助下的最终解决方案!这将构建链接,并为每个目录/元素创建正确的链接。

//$a is our array


$max = count($a);
foreach (range(1,$max) as $count) {
   $b[] = implode("/", array_slice($a, 0, $count));
}
foreach($b as $c) {
   $x = explode('/' , $c);
   $y = array_pop($x);
   echo "<a href='$c'>".$y."</a>"."/"; 
}

【问题讨论】:

    标签: php arrays breadcrumbs


    【解决方案1】:

    如果您只想要示例中的五种组合,那么:

    foreach (range(1,5) as $count) {
        $b[] = implode("/", array_slice($a, 0, $count));
    }
    

    【讨论】:

    • 这非常有效。我刚刚将5 替换为相关数组的计数,现在它可以动态工作了。
    • @Richard:如果有帮助,那就太酷了! - 顺便说一句,你现在有足够的声望来支持答案。因此,请花点时间在这里为其他答案投票(无论它是否有效,都表示赞赏,并保证您有尽可能多的人回答您接下来的所有问题)。
    • 谢谢马里奥,给我点赞!就在后面。也很好的解决方案。
    • 很遗憾,我没有帐户,也无法使用,但我现在肯定会创建一个,因为我很确定所有其他帐户都可以正常工作。
    【解决方案2】:

    在这种情况下,最好使用递归函数。

    $arr = array('dir1', 'dir2', 'dir3', 'dir4', 'dir5');
    
    function breadcrumbs($a)
    {
      // Remove first value
      $first = array_shift($a);
    
      // Loop through other values
      foreach ($a as $key => $value)
      {
        // Add first to remaining values
        $a[$key] = $first . '/' . $value;
      }
    
      // Return array
      return array($first) + breadcrumbs($a);
    }
    

    未经测试,但应该可以工作。它将使每个顺序值包含数组中它之前的值。

    【讨论】:

      【解决方案3】:
      $b = array();
      
      for($i=0;$i<count($a);$i++) { 
        $b[] = array_sum(array_splice($a,0,$i)); 
      }
      

      【讨论】:

        【解决方案4】:

        我想,你想要这样的东西:

        for($i = 0; $i < count($a); $i++)  
          for($j = 0; $j < i + 1; $j++)
             $b[i] += $a[j];  
        

        【讨论】:

        • + 是数字运算符,而不是 PHP 中的字符串运算符。这行不通。它必须是 .=,即使这样也不能满足他的要求。
        猜你喜欢
        • 2011-10-17
        • 1970-01-01
        • 2010-10-04
        • 2011-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多