PHP Array — удалить запятую, оператор If else

#php #arrays #random #if-statement

#php #массивы #Случайный #оператор if

Вопрос:

Я относительно новичок в массивах и борюсь с объемом имеющейся информации, чтобы кратко решить мою проблему. Это все, что я продвинулся.

Мой код:

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

Я знаю, что это возможно, хотя и с трудом пробираюсь через лабиринт подсказок. Любая помощь была бы очень признательна.

Ответ №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';
}
  

ДЕМОНСТРАЦИЯ

Примечание: Если вы используете последнюю версию CSS, вы также можете идентифицировать первый баннер с :first-child псевдоклассом.

Ответ №3:

  1. preg_split можно использовать для разделения, чтобы отбрасывать пустые фрагменты: $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);

  2. В PHP есть суффл для рандомизации массива.

  3. Для этого было бы достаточно чего-то вроде $array[0] = str_replace(..) (первого элемента, я полагаю).

Ответ №4:

  1. Простым способом решить эту проблему было бы изменить строку перед разделением ее на массив, используя, например, trim($imagearrdisplay, ',') . Но поскольку вы просите способ удалить первое и последнее значения, взгляните на array_pop() и array_shift() .

  2. Для рандомизации содержимого в массиве вы можете использовать shuffle() .

  3. Чтобы получить первый элемент, вы можете использовать if-оператор на $i . if($i == 0) {

Комментарии:

1. Привет, Маркус, приветствую ваш ответ — в конечном результате использовались все три ваших ответа. Спасибо!

Ответ №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 /

Комментарии:

1. Я думал об использовании 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,");
  

//тест

это удалит вашу запятую в начале и в конце.