【问题标题】:PHP Array - Remove Comma, If else statementPHP 数组 - 删除逗号,If else 语句
【发布时间】:2011-11-07 11:24:59
【问题描述】:

我对数组比较陌生,并且正在努力处理大量信息以简洁地解决我的问题。这是我所取得的进展。

我的代码:

<?php 

$imagearrdisplay = ",8,7,22,";

$displayitem = explode(",", $imagearrdisplay);

for($i = 0; $i < count($displayitem); $i++){

echo "
<div class='banner'><img src='/images/transitions/$displayitem[$i].jpg' /></div>
Count: $i = $displayitem[$i] ";

}

?>

它当前返回的结果是:

<div class='banner'><img src='/images/transitions/.jpg' /></div>
Count: 0 =  
<div class='banner'><img src='/images/transitions/8.jpg' /></div>
Count: 1 = 8 
<div class='banner'><img src='/images/transitions/7.jpg' /></div>
Count: 2 = 7 
<div class='banner'><img src='/images/transitions/22.jpg' /></div>
Count: 3 = 22 
<div class='banner'><img src='/images/transitions/.jpg' /></div>
Count: 4 =  

我想要达到的目标如下:

  1. 在 imagearraydisplay 爆炸时删除第一个和最后一个逗号,这样我就不会在开始和结束时得到一个空白图像。

  2. 随机化数组的结果

  3. 执行 if / else 函数以找到 [0] 并调整第一个结果,以便我可以使用 css 相应地设置图像样式。

然后能够产生如下所示的结果:

<div class='firstbanner'><img src='/images/transitions/22.jpg' /></div>
<div class='banner'><img src='/images/transitions/7.jpg' /></div>
<div class='banner'><img src='/images/transitions/8.jpg' /></div

我知道这是可能的,尽管在外面的迷宫中挣扎。任何帮助将不胜感激。

【问题讨论】:

    标签: php arrays random if-statement


    【解决方案1】:

    尝试:

    $imagearrdisplay = trim(',8,7,22,', ',');
    $displayitem = explode(',', $imagearrdisplay);
    shuffle($displayitem);
    

    要检查元素是否是第一个,只需执行以下操作:

    if ( $i == 0 ) {}
    

    【讨论】:

      【解决方案2】:

      使用trim 删除左侧和右侧的,。使用shuffle 随机化数组。

      为输出初始化一个$class变量为第一个类,然后遍历所有数字,在第一个项目之后将$class设置为普通类:

      $imagearrdisplay = ",8,7,22,";
      
      $displayitem = explode(",", trim($imagearrdisplay, ','));
      
      shuffle($displayitem);
      
      $class = 'firstbanner';
      foreach($displayitem as $item)
      {
         $src = sprintf('/images/transitions/%d.jpg', $item);
         printf("<div class=\"%s\">\n  <img src=\"%s\">\n</div>\n", $class, $src);
         $class = 'banner';
      }
      

      Demo

      注意:如果您使用recent CSS version,您也可以使用:first-child 伪类来识别第一个横幅。

      【讨论】:

      • 感谢您的回复。真的很感激。
      【解决方案3】:
      1. preg_split 可用于拆分以丢弃空块:$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);

      2. PHP 有 suffle 用于数组随机化。

      3. 为此,类似$array[0] = str_replace(..)(我想是第一个元素)就足够了。

      【讨论】:

        【解决方案4】:
        1. 解决此问题的一种简单方法是在将字符串拆分为数组之前更改字符串,例如使用 trim($imagearrdisplay, ',')。但是,既然您要求删除第一个和最后一个值的方法,请查看 array_pop()array_shift()

        2. 要随机化数组中的内容,您可以使用shuffle()

        3. 要获取第一个元素,您可以在 $i 上使用 if 语句。 if($i == 0) {

        【讨论】:

        • 嗨,Marcus,为您的回复干杯 - 最终结果利用了您的所有三个回复。谢谢!
        【解决方案5】:

        您尝试过 ltrim 吗? http://php.net/manual/en/function.ltrim.php

        $imagearrdisplay = ltrim(",8,7,22,", ",");
        

        此外,您可以使用 shuffle 来随机化您的数组: http://php.net/manual/en/function.shuffle.php

        要设置第一张图片的样式,您可以改用 CSS。

        .banner:first-child
        { 
        background-color:yellow;
        height:50px
        width:50px
        }
        
        <div class='banner'><img src='/images/transitions/22.jpg' /></div>
        <div class='banner'><img src='/images/transitions/7.jpg' /></div>
        <div class='banner'><img src='/images/transitions/8.jpg' /></div>
        

        演示: http://jsfiddle.net/Sapphion/dBDqh/

        【讨论】:

        • 我曾想过使用 CSS,但我确实想对代码进行更多操作以影响最终结果,因此在这种情况下它并不合适。谢谢你的意见。
        【解决方案6】:
        function trim_comma($string) {
            $string = ($string[0] == ',') ? substr($string, 1, strlen($string)) : $string;
            $string = ($string[strlen($string) - 1] == ',') ? substr($string, 0, strlen($string) - 1) : $string;
            return $string;
        }
        
        echo trim_comma(",test,");
        

        //测试

        这将删除开头和结尾的逗号。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-11
          • 2014-11-11
          • 1970-01-01
          • 1970-01-01
          • 2012-07-02
          • 2017-11-15
          相关资源
          最近更新 更多