#php #arrays #url
#php #массивы #url
Вопрос:
У меня есть URL, подобный http://example.com/size/large/color/red . Как я могу преобразовать URL-адрес в ассоциативный массив, чтобы в итоге получить:
$my_array("size" => "large", "color" => "red");
Имейте в виду, что URL-адрес может выглядеть так http://example.com/color/red/size/large/type/round . Таким образом, в принципе, ключи и значения могут быть любыми. Но за их ключом всегда будет следовать значение.
Ответ №1:
$url = 'http://example.com/size/large/color/red';
$path = trim(parse_url($url, PHP_URL_PATH), '/');
$path_chunks = preg_split('// /', $path);
$arr = array();
for($i = 0, $count = count($path_chunks); $i < $count; $i = 2)
{
$arr[$path_chunks[$i]] = $path_chunks[$i 1];
}
Ответ №2:
Вы можете извлечь части, составляющие URL-адрес, затем перебрать их 2 на 2 и назначить первую в качестве ключа, а вторую — в качестве значения.
$url = 'http://example.com/color/red/size/large/type/round';
$my_array = array();
$parts = explode('/', $url);
for ($i = 3, $len = count($parts); $i < $len; $i = 2)
{
$my_array[$parts[$i]] = $parts[$i 1];
}
Это приведет к:
Array
(
[color] => red
[size] => large
[type] => round
)
Комментарии:
1. Print_r для этого возвращает just
Array ( [color] => red [] => )
— значение, оно просто показывает последнюю пару ключ / значение.2. @joeyr, ты уверен? Я просто запустил точный код выше, и я получил что-то другое. Вставлено в ответ.