【发布时间】:2016-06-26 20:01:15
【问题描述】:
我有下一个数组:
$noticias = [
"0" => Array(
"codigo" => "AMBITO"),
"1" => Array(
"codigo" => "ELSOL"),
"2" => Array(
"codigo" => "MDZ")
]
$portales = [
"0" => Array(
"codigo" => "LOSANDES"),
"1" => Array(
"codigo" => "MDZ"),
"2" => Array(
"codigo" => "ELSOL")
]
我需要按属性codigo 比较两个数组。结果是:
$result = [
"1" => Array(
"codigo" => "ELSOL"),
"2" => Array(
"codigo" => "MDZ")
]
我该怎么办?此刻,我有这个:
$noticias_provinciales = array_uintersect($noticias, $portales, function($noticia, $portal_provincial){
$portal_codigo_noticia = $noticia['Portal__codigo'];
$portal_codigo_provincial = $portal_provincial->codigo;
return ($portal_codigo_noticia === $portal_codigo_provincial ? 0: 1);
});
但这对我不起作用。我正在调试,我注意到$noticia 和$portal_provincial 这两个变量都来自同一个数组($noticia)。
我希望函数的第一个变量是$noticia(来自$noticias),第二个是$portal(来自$portales)。我该怎么做?
谢谢!
【问题讨论】:
-
您的示例是数组的数组,您的代码有数组和对象,并且键不匹配(
$noticias中的“Portal__codigo”在哪里?):请统一代码与示例并避免误解?另外:您是否想要一个包含两个源数组的 所有元素 的数组,它们按相同的 codigo 分组,或者您想要通过特定的 codigo 过滤数组? -
你是对的!对不起!这是正确的形式: $noticias = [ "0" => Array( "codigo" => "AMBITO"), "1" => Array( "Portal__codigo" => "ELSOL"), "2" => Array ( "Portal__codigo" => "MDZ") ] 我想通过与第二个匹配的对象过滤 $noticias 数组,正如我在上面所说的。结果必须只有匹配的对象。在这种情况下,“ELSOL”和“MDZ”。并且“AMBITO”不能在数组中!我清楚了吗?谢谢!
标签: php arrays intersection