<?php declare(strict_types=1); ini_set('display_errors', 'On'); error_reporting(-1); $arr = [ 'name' => '码农人生', 'url' => 'https://mn.co/', 't&f' => 'true', ]; echo var_export($arr, true) . PHP_EOL . PHP_EOL; // array ( // 'name' => '码农人生', // 'url' => 'https://mn.co/', // 't&f' => 'true', // ) //========== 数组转“key1=value1&key2=value2&key3=value3”格式字符串 ==========// $query = http_build_query($arr); // 重要提醒:http_build_query()函数会自动对键和值都进行urlencode处理 echo $query . PHP_EOL . PHP_EOL; // name=%E7%A0%81%E5%86%9C%E4%BA%BA%E7%94%9F&url=https%3A%2F%2Fmn.co%2F&t%26f=true $str = urldecode($query); echo $str . PHP_EOL . PHP_EOL; // name=码农人生&url=https://mn.co/&t&f=true //========== “key1=value1&key2=value2&key3=value3”格式字符串转数组 ==========// $result = null; parse_str($str, $result); echo var_export($result, true); // array ( // 'name' => '码农人生', // 'url' => 'https://mn.co/', // 't' => '', // 'f' => 'true', // ) //========== 总结 ==========// // 1、http_build_query()函数不仅会对数组键值进行urlencode处理,也会对数组键名进行urlencode处理。 // 2、在生成数字签名时经常需要构造“key1=value1&key2=value2&key3=value3”格式的字符串,使用http_build_query()函数可以很方便地帮我们 // 构造出这种字符串,但是需要注意的是http_build_query()函数会对value进行urlencode处理,而生成数字签名一般要求使用原样value无需编 // 码,所以得到query字符串后需要进行urldecode处理。
Copyright © 2024 码农人生. All Rights Reserved