2015-06-09 2 views
0

У меня есть сценарий, перенаправляющий серферы на разделы моих сайтов. Например, когда я посылаю серфер на script.php?car=bmw он перенаправляет серфер на http://www.mywebsite.com/bmwПереадресовать на случайную ссылку из массива

Это как сценарий выглядит следующим образом:

<?php 
$array = array(
    "bmw" => "http://www.mywebsite.com/bmw", 
    "toyota" => "http://www.mywebsite.com/toyota", 
    "mercedes" => "http://www.mywebsite.com/mercedes" 
); 

$car = $_GET['url']; 

header("Location: " . $array[$car]); 

?> 

Теперь я хочу, чтобы перенаправить серфер случайного автомобиля, например

"bmw" => "http://www.mywebsite.com/bmw/x1","http://www.mywebsite.com/bmw/x3","http://www.mywebsite.com/bmw/x5", 

"toyota" => "http://www.mywebsite.com/toyota/yaris", "http://www.mywebsite.com/toyota/avensis", "http://www.mywebsite.com/toyota/corolla", 

"mercedes" => "http://www.mywebsite.com/mercedes/e", "http://www.mywebsite.com/mercedes/s", "http://www.mywebsite.com/mercedes/d" 

Поэтому, когда я отправляю серфера на script.php?car=bmw, сценарий перенаправляет пользователя на одну из случайных страниц из раздела bmw.

Могу ли я сделать это с помощью одного массива?

ответ

1

Вам необходимо использовать многомерный массив и функцию array_rand(). Попробуйте учитывая код ниже:

$array = array(
    "bmw" => array("http://www.mywebsite.com/bmw/x1","http://www.mywebsite.com/bmw/x3","http://www.mywebsite.com/bmw/x5"), 
    "toyota" => array("http://www.mywebsite.com/toyota/yaris", "http://www.mywebsite.com/toyota/avensis", "http://www.mywebsite.com/toyota/corolla"), 
    "mercedes" => array("http://www.mywebsite.com/mercedes/e", "http://www.mywebsite.com/mercedes/s", "http://www.mywebsite.com/mercedes/d") 
); 

$car = $_GET['url']; 

header("Location: " . $array[$car][array_rand($array[$car],1)]); 

Вместо того, чтобы одно значение «бмв», теперь есть массив значение, которое может быть рандомизированы (array_rand() делает эту работу за вас).

+0

Это работает, спасибо вы :) – Belhor

2

Вы можете использовать array_rand для этого -

магазин их как -

"bmw" => "http://www.mywebsite.com/bmw/x1,http://www.mywebsite.com/bmw/x3,http://www.mywebsite.com/bmw/x5", 

и использовать -

header("Location: " . array_rand(explode(',', $array[$car]))); 
+0

Отлично! Это правильная конструкция массива? «bmw» => «a», «b», «c», «toyota» => «a», «b», «c», «mercedes» => «a», «b», «c», ? – Belhor

+0

Голосовать за ответ – Deep

+0

@Belhor no. В настоящее время он будет работать для строки. –

1

<?php 
 
$array = array(
 
    "bmw" => array("http://www.mywebsite.com/bmw/x1","http://www.mywebsite.com/bmw/x3","http://www.mywebsite.com/bmw/x5"), 
 
    "toyota" => array("http://www.mywebsite.com/toyota/yaris","http://www.mywebsite.com/toyota/avensis","http://www.mywebsite.com/toyota/corolla",), 
 
    "mercedes" => array("http://www.mywebsite.com/mercedes/s","http://www.mywebsite.com/mercedes/d") 
 
); 
 

 
$car = $_GET['url']; 
 

 
$rand = rand(0,count($array[$car])-1) 
 

 
header("Location: " . $array[$car][$rand]);

2

вы можете перестроить свой массив, чтобы включить эти подтипы в этом случае. Что-то вроде

<?php 
$array = array(
    "bmw" =>array(
     'car1' => "http://www.mywebsite.com/bmw/car1", 
     'car2' => "http://www.mywebsite.com/bmw/car2", 
     'car3' => "http://www.mywebsite.com/bmw/car3", 
     'car4' => "http://www.mywebsite.com/bmw/car4", 
    ), 
    "toyota" =>array(
     'car5' => "http://www.mywebsite.com/toyota/car5", 
     'car6' => "http://www.mywebsite.com/toyota/car6", 
    ), 
    "mercedes" =>array(
     'car7' => "http://www.mywebsite.com/mercedes/car7", 
     'car8' => "http://www.mywebsite.com/mercedes/car8", 
    ), 
); 

$car = $_GET['url']; 

header("Location: " . $array[$car][array_rand($array[$car]))]; 

?> 
Смежные вопросы