PHP数组 - 删除逗号,If else语句

时间:2011-11-07 11:24:59

标签: php arrays random if-statement

我对阵列比较陌生,并且在那里努力解决我的问题。这是我的进步。

我的代码:

<?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相应地设置图像样式。

  4. 然后能够产生如下结果:

    <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
    

    我知道这是可能的,尽管在那里的迷宫中挣扎。任何帮助都会非常感激。

6 个答案:

答案 0 :(得分:3)

尝试:

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

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

if ( $i == 0 ) {}

答案 1 :(得分:1)

使用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伪类识别第一个横幅。

答案 2 :(得分:0)

你尝试过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/

答案 3 :(得分:0)

  1. preg_split可用于拆分,以便删除空件:$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);

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

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

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

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,");

//测试

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