PHP foreach插入第一个特定的类,如果只有一个有不同的包装


php foreach insert first one a certain class, if only one has different wrap

我的images文件夹的文件格式如下

    <img src='images/AAA_1.jpg'>
    <img src='images/AAA_2.jpg'>
    <img src='images/AAA_3.jpg'>
    <img src='images/BBB_1.jpg'>
    <img src='images/BBB_2.jpg'>
    <img src='images/BBB_3.jpg'>
    <img src='images/CAAA_.jpg'>
    <img src='images/DDD_1.jpg'>
    <img src='images/EEE_1.jpg'>
    <img src='images/EEE_2.jpg'>
......

my function is

function filter($contain){

    foreach ($carousel as $image) {
        if(strpos($image, $contain) === 0){
            $op = "<div class='box'><img src='imgs/$image'/></div>";
        }
    }
}

getallfiles用于获取imgs文件夹文件。

$name有CC_1, BBB_, CCC_, DDD_

我如何为每个组插入first类,期望的输出如下

<div class="box first"> 
    <img src='images/AAA_1.jpg'> 
</div>
<div class="box"> 
    <img src='images/AAA_2.jpg'> 
</div>
<div class="box"> 
    <img src='images/AAA_3.jpg'> 
</div>
<div class="box first"> 
    <img src='images/BBB_1.jpg'> 
</div>
<div class="box"> 
    <img src='images/BBB_2.jpg'> 
</div>
<div class="box"> 
    <img src='images/BBB_3.jpg'> 
</div>
<div class="box first"> 
    <img src='images/CCC_1.jpg'> 
</div>
<div class="box first"> 
    <img src='images/DDD_1.jpg'> 
</div> 

您需要在循环之前设置一个变量,它将帮助您确定每个字母的第一个是否已设置。第一次输出该类,然后将该变量设置为可以帮助您知道不会再次输出该类的值。

使用这些数组:

$carousel = array(
  'AAA_1.jpg',
  'AAA_2.jpg',
  'AAA_3.jpg',
  'BBB_1.jpg',
  'BBB_2.jpg',
  'BBB_3.jpg',
  'CCC_1.jpg'
);
$names = array('AAA_', 'BBB_', 'CCC_', 'DDD_');

…这个函数:

function filter($name){
    global $carousel;
    $found_first = false;
    foreach ($carousel as $image) {
       if(strpos($image, $name) === 0){
           $first = !$found_first ? ' first' : ''; // assign class if it's the first
           $found_first = true; // change the variable after the first loop
           $html = "<div class='box%s'><img src='imgs/%s'/></div>" . PHP_EOL;
           echo sprintf($html, $first, $image); // output formatted string
       }
    }
}

…这个循环:

foreach($names as $name) {
    filter($name);
}

…得到如下输出:

<div class='box first'><img src='imgs/AAA_1.jpg'/></div>
<div class='box'><img src='imgs/AAA_2.jpg'/></div>
<div class='box'><img src='imgs/AAA_3.jpg'/></div>
<div class='box first'><img src='imgs/BBB_1.jpg'/></div>
<div class='box'><img src='imgs/BBB_2.jpg'/></div>
<div class='box'><img src='imgs/BBB_3.jpg'/></div>
<div class='box first'><img src='imgs/CCC_1.jpg'/></div>
相关文章: