0

URLを解析して連想配列を作成する関数に取り組んでいます。

数値キーを適切な文字列に置き換えるのに問題があります。

たとえばhttp://localhost/fr/user/edit/5/?foo=bar&love=hate

Array
(
    [langue] => fr
    [app] => user
    [action] => edit
    [id] => 5
    [0] => user
    [1] => 5
    [foo] => bar
    [love] => hate
)

私が欲しいのは:

Array
(
    [langue] => fr
    [app] => user
    [action] => edit
    [id] => 5
    [foo] => bar
    [love] => hate
)

これまでの私の機能は次のとおりです。

<?php
$url = parse_url($_SERVER['REQUEST_URI']);
print_r($url);

// 1./ "folder path" into array
$values = explode('/', $url['path']);
unset($values[0]);

// 2./ "url variables" into array
parse_str($url['query'], $vars);
$url = array_merge($values,$vars);

// 3./ remove empty values
$url =  array_filter($url);
print_r($url);

// 4./ replace numeric keys by the application vars
$keys = array('langue','app','action','id');
$count = 0;
foreach($url as $key => $value)
{
    if(!is_string($key))
    {
        $first_array = array_splice ($url, 0,$count); 
        $insert_array  = [$keys[$key] => $value ];
        unset($url[$key]);
        $url = array_merge ($first_array, $insert_array, $url);

    }
    $count++;
}
print_r($url);
4

3 に答える 3