【发布时间】:2013-12-23 01:15:26
【问题描述】:
我正在尝试使用 ajax 来比较两个数组以查看特定值集是否相同,所以我用相同的值填充了两个数组,当我测试它们时,我的测试表明它们不一样。第一个数组是在 fileA.php 上创建的(带有直接从数据库中提取的 while 循环),并使用 ajax 将其作为 url 变量发送到 fileB.php(响应文件)。然后在 fileB.php 上,我使用 $_GET 来获取数组,并使用 while 循环创建另一个数组,直接从数据库中提取完全相同的值并比较两者。此时这两个数组应该是相同的,但正如我之前所说,我的测试表明它们不是。所以我对两个数组进行了 var_dump,但由于某种原因它们看起来不同。
第一个数组转储:
array(2) {
[0]=>
array(0) {
}
[1]=>
string(6) ",2,2,1"
}
第二个数组转储:
array(3) {
[0]=>
array(0) {
}
[1]=>
string(1) "2"
[2]=>
string(1) "2"
[3]=>
string(1) "1"
}
数组 1 是在 fileA.php 上创建的
while ($row = mysql_fetch_assoc($res))
{
$iState[] = $row["state"];
}///end while
然后我使用 ajax 发送到 fileB.php
js_array=<? echo json_encode($iState); ?>;
var url_js_array=js_array.join(',');
xmlhttp.open("GET","fileB.php?istate="+ url_js_array,true);
xmlhttp.send();
然后在 fileB.php(ajax 响应文件)中检索数组
$iStateValues[] =$_GET["istate"] ;
然后我在 fileB.php 上创建数组 2
while ($row = mysql_fetch_array($res))
{
$currentiState[]= $row["state"];
}///end while
然后我比较了两者
echo"\n\nsame test\n";
if($iStateValues==$currentiState)
echo "same";
else
echo "not same";
两个数组的 var_dump 不同,但它们的创建方式完全相同。这是什么??????
【问题讨论】:
-
我知道您提到您正在运行一个 while 循环并直接构建数组,但您能否给我们检查的代码?
-
我用代码更新了我的帖子....
-
问题在于 json_encode 和 javascript join。那就是你修改了数组。您不应该使用 join 函数,而是稍后使用 json_decode($_GET["istate"]);