我有一個數組$ data,我想用foreach打印它($ data as $ detail)。事情是我想要在foreach中打印上一個和下一個元素。事情是這樣的:帶有上一個和下一個元素的PHP foreach打印陣列
$data = array(1,2,3,4,5,6,7,8);
// foreach result should look like this
8,1,2
1,2,3
2,3,4
3,4,5
4,5,6
5,6,7
6,7,8
7,8,1
我有一個數組$ data,我想用foreach打印它($ data as $ detail)。事情是我想要在foreach中打印上一個和下一個元素。事情是這樣的:帶有上一個和下一個元素的PHP foreach打印陣列
$data = array(1,2,3,4,5,6,7,8);
// foreach result should look like this
8,1,2
1,2,3
2,3,4
3,4,5
4,5,6
5,6,7
6,7,8
7,8,1
你可以去:
$data = array (1,2,3,4,5,6,7,8);
$count = count ($data);
foreach ($data as $key => $current)
{
if (($key - 1) < 0)
{
$prev = $data[$count - 1];
}
else
{
$prev = $data[$key - 1];
}
if (($key + 1) > ($count - 1))
{
$next = $data[0];
}
else
{
$next = $data[$key + 1];
}
echo $prev . ', ' . $current . ', ' . $next . "\n";
或者,如果簡潔是一個問題:
$count = count ($data);
foreach ($data as $i => $current)
{
$prev = $data[(($i - 1) < 0) ? ($count - 1) : ($i - 1)];
$next = $data[(($i + 1) > ($count - 1)) ? 0 : ($i + 1)];
echo $prev . ',' . $current . ',' . $next . "\n";
}
此解決方案假定數組具有數字索引並且沒有漏洞。 – zrvan
<?php
$data = array(1,2,3,4,5,6,7,8);
$count = count($data);
foreach($data as $index => $number)
{
$previous = $data[($count+$index-1) % $count]; // '$count+...' avoids problems
// with modulo on negative numbers in PHP
$current = $number;
$next = $data[($index+1) % $count];
echo $previous.", ".$current.", ".$next."\n";
}
相同的結果完成差異erently:
<?php
$data = range(1,16);
$count=count($data);
$ret='';
for($i=0;$i<$count;$i++){
$ret.=($i==0)?$data[$count-1].',':$data[$i-1].',';
$ret.=$data[$i].',';
$ret.=($i+1>=$count)?$data[$count-$i-1]:$data[$i+1].'<br>';
}
echo $ret;
?>
Result:
16,1,2
1,2,3
2,3,4
3,4,5
4,5,6
5,6,7
6,7,8
7,8,9
8,9,10
9,10,11
10,11,12
11,12,13
12,13,14
13,14,15
14,15,16
15,16,1
你試圖做什麼?請發佈已經嘗試過的代碼。我們將幫助完成它 – robert
向我們展示您迄今爲止的代碼。 – Wukerplank
你知道如何使用數組索引嗎? –