- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
/**
* Constructs a URL encoded query string from an array of key/value pairs
*
* @access protected
* @since 2.0
* @param array $array query string key/value pairs
* @return string
*/
protected function _glue( $array )
{
$query_string = '';
foreach( $array as $key => $val ) :
$query_string .= $key . '=' . rawurlencode( $val ) . '&';
endforeach;
return '?' . substr( $query_string, 0, strlen( $query_string )-1 );
}
это ужасно.. я понимаю, не знать про то, что substr(str, 0, strlen(str) - 1) === substr(str, 0, -1), но хотяб почитать маны о наличие функций .. в общем, страшне.
да, это хороший вариант, но мне он по красоте нравится меньше.
а вообще, есть отличная функция http_build_query
а если с массивами работа, то лучше через array implode.
а вот уже substr, rtrim и прямом вводе разделителя - тут всё зависит от изначального количества элементов. как по мне, при маленьком выигрывает последний способ, а при больших же - substr и rtrim
Govno 36s memory_peak_usage: 662168
Implode 38s memory_peak_usage: 668176
http_build_query 9s memory_peak_usage: 656856
PS: но лучше пользовать http_build_query
в данном контексте скорее всего гк остален для совместимости с предыдущими версиями.
кто сравнивает нативные функции с велосипедами больной на голову, все нативные функции выполняются в разы быстрее