6

これは、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..

その使用例は、Webサイトのパンくずで、次のような特定のリンクの任意のディレクトリをクリックできると思います。/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>"."/"; 
}
4

4 に答える 4

4

例のように 5 つの組み合わせが必要な場合は、次のようにします。

foreach (range(1,5) as $count) {
    $b[] = implode("/", array_slice($a, 0, $count));
}
于 2011-06-06T01:19:58.603 に答える
1
$b = array();

for($i=0;$i<count($a);$i++) { 
  $b[] = array_sum(array_splice($a,0,$i)); 
}
于 2011-06-06T01:20:21.733 に答える
1

その場合は、再帰関数を使用するのが最適です。

$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);
}

テストされていませんが、動作するはずです。連続する各値に、配列内のその前の値が含まれるようにします。

于 2011-06-06T01:17:25.207 に答える
0

私は、あなたはこのようなものが欲しいと思います:

for($i = 0; $i < count($a); $i++)  
  for($j = 0; $j < i + 1; $j++)
     $b[i] += $a[j];  
于 2011-06-06T01:20:00.210 に答える