下面是我的示例数组。
$myArray = [
'A',
'B',
'new-div',
'C',
'D',
'E',
'new-div',
'F',
'new-div',
'G',
'H',
'I',
'J',
'new-div',
'K',
];
以下是我的foreach循环。
foreach($myArray as $item) {
echo '<div>' . $item . '</div>';
}
您可能知道上面的foreach循环的结果是什么。但这不是我想要的。我怎样才能得到如下结果?
<div>
<div>A</div>
<div>B</div>
</div>
<div class='new-div'>
<div>C</div>
<div>D</div>
<div>E</div>
</div>
<div class='new-div'>
<div>F</div>
</div>
<div class='new-div'>
<div>G</div>
<div>H</div>
<div>I</div>
<div>J</div>
</div>
<div class='new-div'>
<div>K</div>
</div>
答案 0 :(得分:1)
正如CodeGodie建议的那样,如果你能够制作另一个阵列,那就更好了:
$myArray = array(
array(
"NoClass" => array(
'A',
'B')),
array(
"new-div" => array(
'C',
'D',
'E')),
array(
"new-div" => array(
'F')),
array(
"new-div" => array(
'G',
'H',
'I',
'J')),
array(
"new-div" => array(
'K'));
);
然后使用此代码:
foreach($myArray as $parentDiv) {
foreach($parentDiv as $className => $subDivs) {
if($className === "NoClass") {
$divClass = "";
else {
$divClass = " class='".$className."'";
}
// make a new parent div
echo "<div".$divClass.">";
// echo subdivs
foreach($subDivs as $subDiv) {
echo '<div>' . $subDiv . '</div>';
}
// end of parent div
echo "</div>";
}
}
答案 1 :(得分:0)
<?php
$divOpen = false;
foreach($myArray as $item) {
if($item == 'new-div'){
if($divOpen == true){ echo '</div>'; }
echo '<div class="new-div">';
$divOpen = true;
}else {
echo '<div>' . $item . '</div>';
}
}
答案 2 :(得分:0)
我会将你的数组重建成一个像这样的多维数组:
$myArray = [
'A',
'B',
array('C', 'D', 'E'),
array('F'),
array('G', 'H', 'I', 'J'),
array('K')
];
然后以这种方式迭代:
foreach ($myArray as $item) {
if (is_array($item)) {
$html = '<div class="new-div">';
foreach ($item as $letter) {
$html .= "<div>$letter</div>";
}
$html .= '</div>';
} else {
$html = "<div>$item</div>";
}
echo $html;
}
答案 3 :(得分:0)
这是我解决它的方式,受到Random和CodeGodie的启发。
$divEnding = '';
$initDiv = true;
$firstNewDiv = 0;
foreach($myArray as $item) {
if($initDiv) {
echo "<div class='no-class'>";
}
if($item === 'new-div') {
$firstNewDiv++;
if($firstNewDiv == 1) {
echo '</div>';
}
echo $divEnding;
echo "<div class='new-div'>";
$divEnding = "</div>";
} else {
echo '<div>' . $item . '</div>';
}
$initDiv = false;
}
if($divEnding !== "") {
echo $divEnding;
}
答案 4 :(得分:-2)
我会使用$ count变量 - 在foreach的每次迭代中递增它
$count = 0;
foreach($myArray as $item) {
if($count == X || $count == Y){
echo '<div class='new-div'>'.
'<div>' . $item . '</div>';
}
else if($count == Z || $count == A){
echo '<div>' . $item . '</div>'.'</div>';
}
else{
echo '<div>' . $item . '</div>';
}
$count++;
}