我有一个简单的应用程序,它将查询发送到 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));
修复了错误,应用再次运行,结果集中没有重复项。