PHP通过特定值比较关联数组
我正在运行两个数据库,SQL和Mongo,当我查询它们以获得所需的模型时,我将其转换为数组PHP通过特定值比较关联数组,php,mysql,arrays,laravel-4,Php,Mysql,Arrays,Laravel 4,我正在运行两个数据库,SQL和Mongo,当我查询它们以获得所需的模型时,我将其转换为数组 $sql = [1 => ["id" => 1, "num" => "123"], 2 => ["id" => 2, "num" => "456"]]; $mongo = ["id" => 1, "num" => "123"]; 但有时我得到多个数组,有时我只能得到一个数组 我想通过“num”值比较两个数组,并删除差异数组(id为2) 我希望得到一个不同的
$sql = [1 => ["id" => 1, "num" => "123"], 2 => ["id" => 2, "num" => "456"]];
$mongo = ["id" => 1, "num" => "123"];
但有时我得到多个数组,有时我只能得到一个数组
我想通过“num”
值比较两个数组,并删除差异数组(id为2)
我希望得到一个不同的关联数组:
$result = [1 => ["id" => 2, "num" => "456"]];
有什么想法吗?我会天真地尝试这样的方法(如果需要,比较应该优化): 编辑:使用php函数的更好解决方案
请提供预期的比较结果。您只需在$sql数组上执行foreach操作,并使用$mongo['num']==$sql\u item['num']删除值,但可能我没有正确理解这个问题
$sql = (isset($sql['id']) ? array(1 => $sql) : $sql; // Always make multi-dimensionnal array
$mongo = (isset($mongo['id']) ? array(1 => $mongo) : $mongo; // Always make multi-dimensionnal array
$results = array();
foreach($sql as $sq)
foreach($mongo as $mq)
if ($sq['num'] != $mq['num'])
$results[] = $mq;
$sql = (isset($sql['id']) ? array(1 => $sql) : $sql; // Always make multi-dimensionnal array
$mongo = (isset($mongo['id']) ? array(1 => $mongo) : $mongo; // Always make multi-dimensionnal array
$results = array_udiff($sql, $mongo, function($a, $b) { return $a['num'] - $b['num']; });