字符串连接中的奇怪行为

时间:2017-12-13 06:42:38

标签: string concatenation php-5.6

这是我的剧本。

$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

为什么“货币”在第一个字符串中显示为一些随机字符?我们如何防止这种情况,保持相同的设置顺序?

1 个答案:

答案 0 :(得分:1)

PHP没有转换任何内容。

浏览器正在将& currency 转换为¤cy以进行显示。如果您想查看浏览器中的 $ merchantData ,那么您需要使用htmlentities进行包装,但这需要专门对字符进行编码,以便显示原始 $ merchantData 浏览器。

但是,在将字符串 $ merchantData 传递给hash_call之前,您不应对字符串执行任何操作。

请记住,原始字符串与浏览器显示的内容之间存在很大差异。