Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
PHP рендомно выводить несколько блоков
Новая тема
Ответить
цитата
29/02/12 в 15:06
Vyacheslav
Есть 7 блоков HTML кода. Я думаю сохранить каждый блок кода в переменную. К примеру:
Код:
$block1 = '<img src="1.jpg"> ...';
$block2 = '<img src="2.jpg"> ...';
...
$block7 = '<img src="7.jpg"> ...';
Хочу в HTML рендере этой страницы выводить эти блоки в предустановленом или рендомных порядках. Под предустановлеными я понимаю конечное множество наборов\массивов\записей типа:
"1234567"(исходная последовательность), "1324576", "7654321"..
Т.е. теперь в странице надо разместить:
Код:
<html>
<?php echo $new_block1; ?>
<?php echo $new_block2; ?>
...
<?php echo $new_block7; ?>
</html>
и каким-то образом поприсваивать им переменные, что я описал выше. Без повторений блоков и приоритетом на быстродействие а не на алгоритм перебора или рендома!
Последний раз редактировалось: Vyacheslav (
29/02/12 в 21:40
), всего редактировалось 1 раз
цитата
29/02/12 в 16:26
FXIX
<?php
$blocks = array($block1,$block2,...)
// том массив перемешивай и выводи
?>
цитата
29/02/12 в 17:18
ibiz
можно так:
Код:
$block[] = '<img src="1.jpg"> ...';
$block[] = '<img src="2.jpg"> ...';
...
$block[] = '<img src="7.jpg"> ...';
shuffle($block);
<html>
<?php echo $block[0]; ?>
<?php echo $block[1]; ?>
...
<?php echo $block[6]; ?>
</html>
цитата
29/02/12 в 17:45
Yacc
Код:
$block1 = '1';
$block2 = '2';
$block3 = '3';
$order = array( 1, 2, 3 );
//shuffle( $order );
foreach( $order as $i )
echo ${'block'.$i};
или
Код:
$blocks = array(
'1',
'2',
'3'
);
$order = array( 0, 1, 2 );
//shuffle( $order );
foreach( $order as $i )
echo $blocks[ $i ];
цитата
29/02/12 в 17:59
st01en
Цитата:
$block1 = '<img src="1.jpg"> ...';
$block2 = '<img src="2.jpg"> ...';
...
$block7 = '<img src="7.jpg"> ...';
$rand='block'.(rand(1,7)) ;
echo $$rand ;
цитата
29/02/12 в 18:50
Vyacheslav
Я вот думаю, может это будет экономнее на стороне клиента делать при помощи JavaScript. Кто-нибудь может подобное на JS расписать?
цитата
29/02/12 в 19:05
FXIX
ну если ты на клиенте будешь(к примеру раз в минуту) перемешивать, то да. будет экономнее
цитата
29/02/12 в 19:12
Vyacheslav
Да там и будет примерно так. Просто на большом\среднем трафе - это не реально для сервера будет делать на PHP.
цитата
29/02/12 в 20:35
Stek
Vyacheslav писал:
Просто на большом\среднем трафе - это не реально для сервера будет делать на PHP.
для пхп перемешать массив займет настолько мало ресурсов, что ты это не почувствуешь. Если конечно там будут не мегабайты текстов.
цитата
29/02/12 в 21:30
Vyacheslav
Stek писал:
для пхп перемешать массив займет настолько мало ресурсов, что ты это не почувствуешь. Если конечно там будут не мегабайты текстов.
А какой ты конкретно способ порекомендуешь из быстродействующих?
Перемещать нужно будет 6-7 блоков\переменных всего лишь 0.5 - 1Кбайта.
цитата
29/02/12 в 21:52
Stek
Рекомендую делать на пхп и не заморачиваться с этим вопросом. Что бы получить экономию , тебе надо будет полностью отказаться от пхп и перейти на чистую статику.
Ты сейчас себе придумал проблему уровня - какой коврик для машины выбрать, резиновый или тряпичный. С тряпичным машина легче и меньше бензина жрет.
цитата
29/02/12 в 21:58
CABMIT
Stek писал:
Ты сейчас себе придумал проблему уровня - какой коврик для машины выбрать, резиновый или тряпичный. С тряпичным машина легче и меньше бензина жрет.
+100500
цитата
13/03/12 в 23:25
zombi
Я не совсем понял задачу, но вот набросал кое-что на JavaScript
<html>
<head>
<script type="text/javascript">
function change_order() {
var order1 = new Array(1, 2, 3, 4, 5, 6, 7);
var order2 = new Array(7, 2, 3, 4, 5, 6, 1);
var blocks = new Array();
for (var i = 0; i < order1.length; i++) {
var k = i + 1;
blocks[i] = document.getElementById("id" + k).innerHTML;
}
for (var i = 0; i < order2.length; i++) {
var l = i + 1;
var m = order2[i] - 1;
document.getElementById("id" + l).innerHTML = blocks[m];
}
}
</script>
</head>
<body onload="change_order();">
<div id="id1">1</div>
<div id="id2">2</div>
<div id="id3">3</div>
<div id="id4">4</div>
<div id="id5">5</div>
<div id="id6">6</div>
<div id="id7">7</div>
</body>
</html>
Кое-что здесь лишнее, ещё и буква L маленькая на единицу похожа, но думаю идея понятна.
Новая тема
Ответить
Эта страница в полной версии