使用数组中的参数生成URL

Mot*_*ive 53 php arrays

我需要像下面这样采用一个数组:

$subids = Array
    (
        [s1] => one
        [s2] => two
        [s3] => three
        [s4] => four
        [s5] => five
        [s6] => six
    )
Run Code Online (Sandbox Code Playgroud)

并生成一个URL,例如http://example.com?s1=one&s2=two&s3=three=&s4=four&s5=five&s6=six

并非总是定义所有子标识,因此有时可能未定义s3,因此不应将其附加到URL.另外,无论第一个subid是什么,它必须有?在它之前而不是&符号(&)

所以,如果数组只是:

$subids = Array
    (
        [s2] => two
        [s6] => six
    )
Run Code Online (Sandbox Code Playgroud)

那么URL需要是http://example.com?s2=two&s6=six

到目前为止,我有以下内容:

$ url =' http://example.com '

    foreach ($subids AS $key => $value) {
        $result[$id]['url'] .= '&' . $key . '=' . $value;
    }
Run Code Online (Sandbox Code Playgroud)

但是,我不确定追加的最佳方法是什么?在第一个键/值对的开头.

我觉得有一个PHP函数来帮助解决这个问题,但我找不到多少.我正在使用Codeigniter,如果我可以使用CI提供的任何东西.

Bab*_*aba 124

您只需要http_build_query:

$final = $url . "?" . http_build_query($subids);
Run Code Online (Sandbox Code Playgroud)


Yak*_*bon 16

你可以使用http_build_query()功能.来自php.net的示例:

<?php
$data = array(
    'foo' => 'bar',
    'baz' => 'boom',
    'cow' => 'milk',
    'php' => 'hypertext processor',
);

echo http_build_query( $data ) . "\n";
echo http_build_query( $data, '', '&amp;' );
?>
Run Code Online (Sandbox Code Playgroud)

并输出这一行:

foo=bar&baz=boom&cow=milk&php=hypertext+processor
foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor
Run Code Online (Sandbox Code Playgroud)

您可以从以下来源阅读:http://www.php.net/manual/en/function.http-build-query.php

顺便说一句,如果你使用WordPress,你可以使用这个功能:http://codex.wordpress.org/Function_Reference/add_query_arg

玩得开心.:)