我得到了以下数组(缩短了......多点意味着它们是数据,两个数组都从第1项开始直到结束。
Array
(
[12U_S_136_15_29_141] => Array
(
.....
[35] => Array
(
[stop_sequence] => 35
[stop_id] => 1601394
)
.....
[46] => Array
(
[stop_sequence] => 46
[stop_id] => 122052
)
[47] => Array
(
[stop_sequence] => 47
[stop_id] => 136208
)
[48] => Array
(
[stop_sequence] => 48
[stop_id] => 128163
)
)
[12U_S_141_57_6_141] => Array
(
[1] => Array
(
[stop_sequence] => 1
[stop_id] => 1601394
)
.....
[12] => Array
(
[stop_sequence] => 12
[stop_id] => 122052
)
[13] => Array
(
[stop_sequence] => 13
[stop_id] => 136208
)
[14] => Array
(
[stop_sequence] => 14
[stop_id] => 128163
)
)
)
如您所见,两个阵列末端相等...... 35 = 1
,46 = 12
,...,48 = 14
。相同,我的意思是相同的stop_id
,但stop_sequence
总是不同的,当然还有数组条目号。
我想知道如何将整个数组与另一个数组进行比较,以便我可以知道,第二个数组是否与100%的第一个数组匹配(除了我们不寻找stop_sequence
因此,这可能是不同的。所以在这种情况下,两者都将标记为“相等”,但如果让我们说最后一个条目具有不同的stop_id(条目48将是!=来自条目14),则数组将标记为“不平等”。
任何人都有引导我的道路?我一直在想,但不知道怎么做。我尝试过array_compare,但这没有任何结果:\
由于
修改
没有什么可以改变到数据库。此外,需要以这种方式创建数组(使用奇怪的文本,即12U_S_136_15_29_141
)。我可以用PHP做任何事情。
答案 0 :(得分:0)
将stop_id提取到新数组:s并比较thous
这是一个有用的功能
function sub_array($array, $sub_key)
{
$new_array = array();
if(is_array($array) AND $array)
{
foreach($array as $key => $data)
{
$new_array[$key] = $data[$sub_key];
}
}
return $new_array;
}
然后只是比较数组
if(sub_array($a['12U_S_136_15_29_141'], 'stop_id') == sub_array($a['12U_S_141_57_6_141'], 'stop_id'))
或者如果您知道匹配的stop_id:
$first_stop_id_list = sub_array($a['12U_S_136_15_29_141'], 'stop_id');
$secound_stop_id_list = sub_array($a['12U_S_141_57_6_141'], 'stop_id');
$matches = array_intersect($first_stop_id_list, $secound_stop_id_list);
if(!$matches)
echo "No stop_id matches";
else if($first_stop_id_list = $secound_stop_id_list)
echo "all element was in both";
else if($matches == $first_stop_id_list)
echo "all element in first was in secound";
else if($matches == $secound_stop_id_list)
echo "all element in secound was in first";