我正在尝试使用http_build_query构建一个查询字符串,当一个数字作为数组中的一个值传递时,它会产生意外的结果。
$number = '123';
$data = array(
'first' => $number,
'second' => 'test',
);
http_build_query( $data );
//output is first%123&second=test
//unexpected output is % after first instead of =
$number = '500';
$data = array(
'first' => $number,
'second' => 'test',
);
http_build_query( $data );
//output is firstP0&second=test
//unexpected output is P0 after first instead of =500
$number = '1';
$data = array(
'first' => $number,
'second' => 'test',
);
http_build_query( $data );
//output is first=1&second=test
//output has an equal sign and not a percent sign
在第一个例子中,在我希望有一个等号的地方有一个百分号。
第二个示例将= 500更改为P0。
第三个例子是我一直期待的,但出于某种原因,似乎数字的长度正在改变%
和=
之间的输出
注意:我尝试使用各种长度数字(1,12,1234,12345等),并使用不同的数字。只有单个数字示例(无论我是否使用1,2,3,4等)都能够产生与预期相同的等号。
有没有办法将数字传递给http_build_query()
,它不会像我在示例中引用的那样产生意外输出?
答案 0 :(得分:0)
这似乎是一个怪癖,无论是网站运行的PHP版本还是服务器设置中的某些内容。我在其他几个具有不同PHP版本的服务器上尝试了这些代码,它运行正常。
我在使用PHP v5.5.24和Apache v2.4.12时发生意外输出的服务器设置。 localhost服务器在DesktopServer版本3.8.3上运行。
我无法确定导致这种情况发生的具体问题,但是当我在使用PHP 7的其他服务器上运行相同的代码时,它按预期工作。我还尝试了不同服务器上的各种其他PHP版本,并且都正常工作。
可能是以下问题之一: