两个数组的var_dumps不同,但它们的创建方式完全相同。这是为什么?????
第一个数组转储:
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";
答案 0 :(得分:1)
问题:
目前,您将逗号分隔的字符串发送到fileB.php
。
$iStateValues[] = $_GET["istate"] ;
$_GET["istate"]
包含以逗号分隔的字符串,在上面的语句中,您将值推送到空数组$iStateValues
。
现在,在fileB.php
中,您使用$currentiState
循环创建另一个数组while
。然后你试着比较它们。
$iStateValues
是一个字符串,不是数组。 $currentiState
是一个真正的数组。因此,比较将始终返回FALSE
。
如何解决问题:
不是将逗号分隔的字符串发送到fileB.php
,而是发送实际的JSON字符串。所以你的代码看起来像:
js_str=<? echo json_encode($iState); ?>;
xmlhttp.open("GET","fileB.php?istate="+ js_str,true);
xmlhttp.send();
现在,在fileB.php
中,您可以接收JSON字符串,然后对其进行解码,如下所示:
$jsonArray = json_decode($_GET['istate'], true);
(JSON
解码中的第二个参数表示它应该被解码为关联数组而不是对象。)
然后进行比较。