array_map和array_unique技术将 JSON 数据损坏到应用程序


array_map and array_unique technique corrupting json data to app

我有一个简单的应用程序,它将查询发送到 Web 数据库并返回结果集。 该应用程序运行良好,直到我在形成 json 响应之前添加一行代码以防止多维数组中的重复项。我更改的唯一代码是在服务器上的 php 文件中,而不是在应用程序中。

这是工作正常的之前代码,应用程序不会崩溃或抛出错误:

while($row = $result->fetch_object())
{
    array_push($resultArray, $row);
}
echo json_encode($resultArray);

这是我如何更改它

while($row = $result->fetch_object())
{
    array_push($tempArray, $row);
}
// remove any duplicates
$resultArray = array_map("unserialize", array_unique(array_map("serialize", $tempArray)));
echo json_encode($resultArray);

此 PHP 代码从测试 PHP 文件中的多维数组中删除重复项,没有问题。 为什么它会损坏我的 JSON 并使应用程序崩溃? 有没有更好的方法可以从多维数组中删除重复条目?

这是Xcode调试器中的错误文本

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary objectAtIndex:]: unrecognized selector sent to instance 

感谢 MarkB 和狗鼻的有用评论。 这是解决方案。

var_dump透露,array_map功能按预期工作并删除了重复项。 但是,发送到应用的 JSON 缺少索引键。

改变

echo json_encode($resultArray);

echo json_encode(array_values($resultArray));

修复了错误,应用再次运行,结果集中没有重复项。