我正在寻找PHP函数的名称,以便从键值对数组构建查询字符串。请注意,我正在寻找 * 内置的PHP* 函数来做到这一点,而不是一个自制的(这是所有的谷歌搜索似乎返回)。有一个,我只是不记得它的名字或在php.net上找到它。IIRC的名字并不那么直观。
xv8emn3q1#
你在找http_build_query()。
http_build_query()
vptzau2j2#
下面是一个简单的php4友好的实现:
/** * Builds an http query string. * @param array $query // of key value pairs to be used in the query * @return string // http query string. **/ function build_http_query( $query ){ $query_array = array(); foreach( $query as $key => $key_value ){ $query_array[] = urlencode( $key ) . '=' . urlencode( $key_value ); } return implode( '&', $query_array ); }
n1bvdmb63#
就像@thatjuan的答案一样。更兼容的PHP4版本:
@thatjuan
if (!function_exists('http_build_query')) { if (!defined('PHP_QUERY_RFC1738')) { define('PHP_QUERY_RFC1738', 1); } if (!defined('PHP_QUERY_RFC3986')) { define('PHP_QUERY_RFC3986', 2); } function http_build_query($query_data, $numeric_prefix = '', $arg_separator = '&', $enc_type = PHP_QUERY_RFC1738) { $data = array(); foreach ($query_data as $key => $value) { if (is_numeric($key)) { $key = $numeric_prefix . $key; } if (is_scalar($value)) { $k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($key) : rawurlencode($key); $v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($value) : rawurlencode($value); $data[] = "$k=$v"; } else { foreach ($value as $sub_k => $val) { $k = "$key[$sub_k]"; $k = $enc_type == PHP_QUERY_RFC3986 ? urlencode($k) : rawurlencode($k); $v = $enc_type == PHP_QUERY_RFC3986 ? urlencode($val) : rawurlencode($val); $data[] = "$k=$v"; } } } return implode($arg_separator, $data); } }
zc0qhyus4#
没必要那么做
GuzzleClient($config)->Request($method , $uri , [ 'json'=>[...] , 'query'=> $your_query_array ])
query将填充您的uri-query
2023年:D
gajydyqb5#
Implode会将一个数组组合成一个字符串,但是要生成一个kay/value对的SQL查询,你必须编写自己的函数。
5条答案
按热度按时间xv8emn3q1#
你在找
http_build_query()
。vptzau2j2#
下面是一个简单的php4友好的实现:
n1bvdmb63#
就像
@thatjuan
的答案一样。更兼容的PHP4版本:
zc0qhyus4#
没必要那么做
query将填充您的uri-query
2023年:D
gajydyqb5#
Implode会将一个数组组合成一个字符串,但是要生成一个kay/value对的SQL查询,你必须编写自己的函数。