2011-11-07 105 views
0

我對數組相對比較陌生,並且在那裏用大量信息來簡潔地解決我的問題。就我所取得的進展而言。PHP數組 - 刪除逗號,如果其他語句

我的代碼:

<?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 

我知道這是可能的,儘管通過tutes的迷宮掙扎在那裏。任何幫助將非常感激。

回答

3

嘗試:

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

要檢查是否元素是第一隻是做:

if ($i == 0) {} 
0

你試過ltrim嗎? http://php.net/manual/en/function.ltrim.php

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

此外,您還可以使用隨機播放,隨機的排列: 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/

+0

我想過使用CSS,但我想用代碼來做更多的操作來影響最終結果,所以在這種情況下它不適合。感謝您的輸入。 – Brandrally

0
  1. preg_split可以用來分割,以便它可以丟棄空的部分:$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);

  2. PHP有suffle用於數組隨機化。

  3. 對於這個,像$array[0] = str_replace(..)(我想是第一個元素)就足夠了。

0
  1. 一個簡單的方法來解決,這將是改變字符串拆分之前到一個數組,使用e.g trim($imagearrdisplay, ',')。但既然你要求一個方法來刪除第一個和最後一個值,看看array_pop()array_shift()

  2. 要隨機化數組中的內容,您可以使用shuffle()

  3. 要獲得第一個元素,您可以在$i上使用if語句。 if($i == 0) {

+0

嗨馬庫斯,乾杯你的迴應 - 最終結果利用了你的所有迴應。謝謝! – Brandrally

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僞類標識第一個標題。

+0

感謝您的回覆。非常感謝。 – Brandrally

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

//測試

這將在開始時和結束時刪除您的逗號。