2011-11-07 5 views
0

필자는 배열에 비교적 익숙하지 않아 문제를 간결하게 해결할 수있는 정보량에 어려움을 겪고 있습니다. 이것은 제가 지금까지 진보 한 것입니다.PHP 배열 - 쉼표 제거, else 문

내 코드

: 그것은 현재의 결과를 반환

<?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 내의 마지막 쉼표로 폭발 할 때 시작과 끝에서 빈 이미지로 끝나지 않습니다. . I 그에 따라 이미지의 스타일 CSS를 사용할 수 있도록

  2. 는 [0] 조정 첫번째 결과를 검색하는 경우/다른 기능을 수행하는 배열

  3. 결과를 Randomise. , 나는 그것이 가능하다고 알고

    <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 
    

    거기에서 결정한의 미로를 통해 어려움을 겪고 있지만 :

다음처럼 보이는 결과를 생산할 수있을합니다. 어떤 도움이라도 대단히 감사 할 것입니다.

답변

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. 당신은 예컨대 trim($imagearrdisplay, ',') 사용하여 배열로 분할하기 전에 문자열을 변경하는 것이 문제를 해결하는 쉬운 방법.그러나 첫 번째 값과 마지막 값을 제거하는 방법을 묻는 것은 array_pop()array_shift()입니다.

  2. 배열의 콘텐츠를 임의 화하려면 shuffle()을 사용할 수 있습니다.

  3. 첫 번째 요소를 얻으려면 $i에서 if 문을 사용할 수 있습니다.

+0

안녕하세요, 마커스, 회신 귀하의 회신 - 최종 결과는 귀하의 모든 응답을 활용. 고맙습니다! – Brandrally

1

사용 trimif($i == 0) { 왼쪽과 오른쪽에 ,를 제거합니다. 배열을 임의 화하려면 shuffle을 사용하십시오.

$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

주 : 출력용

첫번째 항목 후 정상 클래스에 $class을 설정 한 모든 숫자를 반복 한 후, 제 클래스에 $class 변수를 초기화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,"); 

// 시험이 시작 부분과 끝 부분에 당신의 쉼표를 제거합니다.