#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 =
Чего я хотел бы достичь, так это следующего:
-
Чтобы удалить первую и последнюю запятую в imagearraydisplay, когда он взорвется, чтобы я не получал пустое изображение в начале и конце.
-
Рандомизируйте результаты массива
-
Выполните функцию 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:
-
preg_split можно использовать для разделения, чтобы отбрасывать пустые фрагменты:
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
-
В PHP есть суффл для рандомизации массива.
-
Для этого было бы достаточно чего-то вроде
$array[0] = str_replace(..)
(первого элемента, я полагаю).
Ответ №4:
-
Простым способом решить эту проблему было бы изменить строку перед разделением ее на массив, используя, например,
trim($imagearrdisplay, ',')
. Но поскольку вы просите способ удалить первое и последнее значения, взгляните наarray_pop()
иarray_shift()
. -
Для рандомизации содержимого в массиве вы можете использовать
shuffle()
. -
Чтобы получить первый элемент, вы можете использовать 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,");
//тест
это удалит вашу запятую в начале и в конце.