这是我的剧本。
$settings = [
'amount' => "100",
'currency' => 'AED',
];
foreach($settings as $key => $val) {
if(in_array($key,$this->supportedParams)) {
$merchantData[] = $key.'='.$val;
}
}
$merchantData = array_filter($merchantData);
$merchantData = implode('&',$merchantData);
print_r($merchantData);
输出
量=100¤cy= AED
但是当我将设置更改为
时$settings = [
'currency' => 'AED',
'amount' => "100",
];
打印正确,
货币= AED&安培;量= 100
为什么“货币”在第一个字符串中显示为一些随机字符?我们如何防止这种情况,保持相同的设置顺序?
答案 0 :(得分:1)
PHP没有转换任何内容。
浏览器正在将& currency 转换为¤cy以进行显示。如果您想查看浏览器中的 $ merchantData ,那么您需要使用htmlentities进行包装,但这需要专门对字符进行编码,以便显示原始 $ merchantData 浏览器。
但是,在将字符串 $ merchantData 传递给hash_call之前,您不应对字符串执行任何操作。
请记住,原始字符串与浏览器显示的内容之间存在很大差异。