Автоклуб БУСОВОД

Автоклуб БУСОВОД (https://busovod.ua/index.php)
-   IT технологіі (https://busovod.ua/forumdisplay.php?f=73)
-   -   Ротация переменных на PHP (https://busovod.ua/showthread.php?t=5709)

abez 21.03.2009 07:52

Ротация переменных на PHP
 
Вот задачка для школьника, но чет с бодунища ничего не приходит в голову.
Есть две, три переменых:
$one = "Привет";
$two = "Пока";

И есть переменная вывода $out к-рая используется дальше в скрипте.
Вопрос: как переменной $out присваивать значения выше указанных переменных по очереди?

Vasek 21.03.2009 19:47

Цитата:

Допис від abez (Допис 32160)
Вопрос: как переменной $out присваивать значения выше указанных переменных по очереди?

Заноси входящие данные в массив, типа:

//инициализация
$array_in = array();
$one = "Привет";
$array_in[0] = $one;
$two = "Пока";
$array_in[1] = $two;

//вывод данных
foreach( $array_in as $key=>$value )
{
$out = $array_in[$key];
echo $out;
}

alexusaty 21.03.2009 21:57

Vasek, а что это сработает при более чем одном проходе массива?

По-моему проще так:
//init
$one = "Привет";
$two = "Пока";
$out = $one;

function sel_out(&$string)
{
if ($string == $one) {$string = $two} else {$String = $one}
};

$ii = 0;
while ($ii < 10)
{
sel_out($out);
echo $out\n;
inc($ii);
}

ИМХО. Просто порграммировать доводилось последний раз несколько лет назад......

Vasek 21.03.2009 22:17

Цитата:

Допис від alexusaty (Допис 32194)
а что это сработает при более чем одном проходе массива?

в массиве наращивается индекс, я показал условно, поставь переменную в индекс и инкрементируй её, вот и всё.
alexusaty, пляшем от постановки задачи. Чем проще тем надёжнее. Я еси чес, вообще не могу дать совета при таком скудном кол-ве исходных данных. Это я так по простому ляпанул. Если нужно решить проблему, то обычно дают или ТЗ или обширное описание, ну типа откуда ноги растут и чего нужно получить, как то так ;)

abez 21.03.2009 22:40

Vasek, это в vBulletin будет ротация двух баннеров.

Vasek 21.03.2009 22:57

для vBulletin вроде есть ротатор банеров Power Banner Manager

abez 22.03.2009 17:54

Vasek, чет как-то не особо работает
http://www.jpm.com.ua/1.php

alexusaty, [CODE]<?

//init
$one = "Привет";
$two = "Пока";
$out = $one;

function sel_out(&$string)
{
if ($string == $one)
{
$string = $two;
}
else {
$String = $one;
}
}

$ii = 0;
while ($ii < 10)
{
sel_out($out);
echo "$out\n";
inc($ii);
}

?>[/CODE]

В итоге
Цитата:

Fatal error: Call to undefined function: inc() in /home/jpmcom/public_html/2.php on line 24

alexusaty 22.03.2009 23:28

Цитата:

inc($ii);
Сорри, это простой инкремент. Должно быть
$ii++;

Путаю с паскалем. Говорил ведь что уже давненько не программировал.

abez 23.03.2009 06:36

alexusaty, а вот работа твоего скрипта :)
http://www.jpm.com.ua/2.php

alexusaty 23.03.2009 20:27

abez,

Цитата:

<?php
$one = "Привет";
$two = "Пока";
$out = $one;

function sel_out(&$sel_var, $one, $two)
{
if ($sel_var == $one)
{
$sel_var = $two;
}
else {
$sel_var = $one;
}
}

$ii = 0;
while ($ii < 10)
{
sel_out($out,$one,$two);
echo "$out\n";
$ii++;
}

?>
Вот так работает. Грубо конечно, но работает. Не знаю точно как в php работать с глобальными переменными. Приходится передавать их функции в качестве параметров. А со $string пропарочка вышла. Забыл что такой тип бывает. Если бы язык был более строгий, типа паскаля, обязательно выдал бы синтаксическую ошибку. А в php анархия полная.

abez 23.03.2009 20:42

alexusaty, мммм, с того же бодунища забыл уточнить.
Смена должна происходить при обновлении страницы :)

Vasek 23.03.2009 20:50

вот самый, самый простой варик: использование JS - смотреть , без обновления страницы крутит нужное кол-во баннеров, статически прописываешь скорость обновления, сырцы имиджей и урлы линков. нет только статистики кликов ;)
исходник тут

alexusaty 23.03.2009 20:59

для ротации при обновлении страницы записывай состояние в cookie.

abez 23.03.2009 21:04

Vasek, джаву не хотелось :(
alexusaty, куки тоже :) Наверное уже проще через MySql.
А рандондомным ротатором можно обойтись ?
Крутить теже две переменные и присваивать значние $out ?
Если нет, то буду привязыватся к времени. До обеда показывать один баннер, после обеда другой.

Vasek 23.03.2009 21:07

прогуглил, есть штук 5 openGL php/mysql ротаторов с админкой. Статистика, время показов и т.д.

abez 23.03.2009 21:09

Vasek, наворачивать vBulletin сторонними скриптами, опять же не хочу, я не планирую отчитыватся перед заказчиком.
У меня все статически, одна страница, один баннер :) Но тут заказчик сделал мне подставу, но отказыватся не хочу, клиент перспективный.

alexusaty 23.03.2009 21:10

abez, Ну рандомный ротатор в принципе выход. Если выбирать один из двух.....

abez 23.03.2009 21:12

alexusaty, а накидать есть возможность ?
Я анализировать чужое и видоизменять умею, но писать с нуля - баран :)
Если не затруднит, конечно, если тяжко, то уже с утра полезу в гугл.

Vasek 23.03.2009 21:30

$arr = array();
$arr[0] = "ONE";
$arr[1] = "TWO";
$out = $arr[rand(0,1)];
echo $out;

alexusaty 23.03.2009 22:10

abez,

Цитата:

<?php
//инициализация
$array_in = array();
$one = "Url_1";
$array_in[0] = $one;
$two = "Url_2";
$array_in[1] = $two;
$three = "Url_3";
$array_in[2] = $three;
//вывод данных
$ii=0;
while( $ii < 10 )
{
$out = $array_in[rand(0,2)];
echo "$out\n";
$ii++;
}
?>
Васек был ближе к истине когда отвечал на твой первый вопрос. Поэтому я только дополнил его скрипт. А с куками проблем никаких - почитай в описании языка как писать в куки и читать оттуда. Это все в описании сеансов. Там буквально пара-тройка функций. С рандомным ротатором получается чем больше баннеров тем лучше он работает. С двумяя поэкспериментировал - получается много повторений подряд. Клиенту может не понравиться. К тому же всегда лучше встраивать в свою работу универсальные решения, которые работают не только в частном случае дву-трех баннеров. На мой взгляд лучше будет воспользоваться куками или на крайняк mysql. хотя mysql будет тормозить загрузку страницы и увеличивает загрузку сервера.


Часовий пояс GMT +2. Поточний час: 05:24.

vBulletin 3.8.11 ; Copyright © 2000-2024 Jelsoft Enterprises Limited
Переклад: © Віталій Стопчанський, 2004-2010
busovod_ua©