1

我有以下数组:

array(6) {
  [0]=>
  string(4) "XXX1"
  [1]=>
  int(16)
  [2]=>
  string(4) "YYY1"
  [3]=>
  string(4) "XXX2"
  [4]=>
  int(632)
  [5]=>
  string(4) "YYY2"
}

我想要这样的输出:

第一个 XXX - 第一个 int() - 第一个 YYY\n

第二个 XXX - 第二个 int() - 第二个 YYY\n

如何使用 while、for 或 foreach 来实现这一点?

谢谢。

4

2 回答 2

1

像 Pe de Leao 一样,我不能 100% 确定我理解你想要的输出,但这里有两个候选人:

不检查 3 个完整的“集合”:

<?php
$flat = array(
    "XXX1",
    16,
    "YYY1",
    "XXX2",
    632,
    "YYY2"
);

for ($i = 0; $i < count($flat); $i += 3)
    echo "{$flat[$i]} - {$flat[$i + 1]} - {$flat[$i + 2]}\n";
?>

是否检查 3 个完整的“集合”:

<?php
$flat = array(
    "XXX1",
    16,
    "YYY1",
    "XXX2",
    632,
    "YYY2",
    "XXX3",
    932
);

for ($i = 0; $i < count($flat) && ($i + 3) < count($flat); $i += 3)
    echo "{$flat[$i]} - {$flat[$i + 1]} - {$flat[$i + 2]}\n";
?>

这些示例并非万无一失,例如它们做出假设,例如数组被数字索引而没有孔,但我希望这与您想要的足够接近。

于 2012-12-07T19:20:34.377 回答
1

我不确切知道您正在寻找什么样的输出,但这会将它放在段落标签中:

$cnt = 0;
$out = '<p>';
foreach ($arr as $key => $value){
    $out .= $value.' - ';
    $cnt++;
    if ($cnt == 3){
        $cnt = 0;
        $out = substr($out, 0, -3).'</p><p>';
    }
}
$out = substr($out, 0, -3);
于 2012-12-07T18:45:50.737 回答