ここでは、クエリを作成して名前を保存するために作成した関数です。私は同じ名前の複数のクエリ文字列パラメータを必要とするサードパーティのAPIで動作するようにこれを作成しました。ジェイソンの解決策はいいですが、私はちょうど大括弧を削除するために正規表現を使用すると不快感を感じた。
私は実装をhttp_build_query
と同じにしようとしました。唯一の違いは、最後の$enc_type
パラメータを取らないことです。エンコーディングはPHP_QUERY_RFC1738
、http_build_query()
function http_build_query_same_names($query_data, $numeric_prefix = null, $arg_separator = null) {
if (!is_object($query_data) && !is_array($query_data)) {
trigger_error(__FUNCTION__ . "(): Parameter 1 expected to be Array or Object. Incorrect value given", E_USER_WARNING);
return false;
}
$query_data = is_object($query_data) ? get_object_vars($query_data) : $query_data;
$numeric_prefix = isset($numeric_prefix) ? $numeric_prefix : '';
$arg_separator = isset($arg_separator) ? $arg_separator : ini_get('arg_separator.output');
$final = array();
foreach ($query_data as $name => $value) {
$name = is_numeric($name) ? $numeric_prefix . $name : $name;
if (is_array($value)) {
array_walk_recursive($value, function($value, $key, $name) use (&$final) {
$final[] = urlencode($name) . '=' . urlencode($value);
}, $name);
}
else {
$final[] = urlencode($name) . '=' . urlencode($value);
}
}
return implode($arg_separator, $final);
}
ブリリアントのデフォルトのエンコードタイプでなければなりません
urlencode()
を使用して行われます!ちょうど私が必要なもの、ありがとう! – alexleonardありがとう! mailgun APIは、メッセージのバッチ送信にこれを必要とします。 –
ありがとうございました。 Google Adsens API – Florin