php两个多维数组的区别
php two Multidimensional Array difference
我正在使用两个多维数组,下面的区别是我的数组:
数组 1:
Array
(
[0] => Array
(
[F_CONTACT_ID] => 2
[F_CONTACT_FNAME] => name2
[F_CONTACT_NAME] => name22
)
[1] => Array
(
[F_CONTACT_ID] => 3
[F_CONTACT_FNAME] => name3
[F_CONTACT_NAME] => name33
)
)
数组 2:
Array
(
[0] => Array
(
[F_CONTACT_ID] => 2
[F_CONTACT_FNAME] => name2
[F_CONTACT_NAME] => name22
)
[1] => Array
(
[F_CONTACT_ID] => 3
[F_CONTACT_FNAME] => name3
[F_CONTACT_NAME] => name33
)
[2] => Array
(
[F_CONTACT_ID] => 5
[F_CONTACT_FNAME] => name5
[F_CONTACT_NAME] => name55
)
)
我只想比较数组中与 'F_CONTACT_ID' 的差异。
我的结果数组应该是:
结果:
Array
(
[2] => Array
(
[F_CONTACT_ID] => 5
[F_CONTACT_FNAME] => name5
[F_CONTACT_NAME] => name55
)
)
另外如果一个数组是空的:假设Array2是空的。我的结果数组应该是:
Array
(
[0] => Array
(
[F_CONTACT_ID] => 2
[F_CONTACT_FNAME] => name2
[F_CONTACT_NAME] => name22
)
[1] => Array
(
[F_CONTACT_ID] => 3
[F_CONTACT_FNAME] => name3
[F_CONTACT_NAME] => name33
)
)
我尝试了不同的解决方案,但没有任何效果。我试图检索 F_CONTACT_ID 并存储在一维数组中并进行比较,但它花了很多时间。
请帮助我更好更快的解决方案。
您可以试试函数 array-diff-key() 函数,它可以帮助您使用键比较两个多维数组。
您可以访问此页面了解更多信息:http://php.net/manual/en/function.array-diff-key.php
这样的事情怎么样?
$array1;
$array2;
$array3;
foreach ($array1 as $ar1) {
foreach ($array2 as $ar2) {
if ($ar1['F_CONTACT_ID']==$ar2['F_CONTACT_ID']) {
array_push($array3, $ar1);
}
}
}
它不是很优化,为了最大化性能更改第二个 foreach 检查 array_push 是否已经附加(使用 bool 条件)
你试过吗?
for($i=0;$i<count($array1);$i++) {
$temp[$array1[$i]['F_CONTACT_ID']] = $array1[$i];
};
for($i=0;$i<count($array2);$i++) {
if($temp[$array2[$i]['F_CONTACT_ID']]) {
unset($temp[$array2[$i]['F_CONTACT_ID']]);
} else {
$temp[$array2[$i]['F_CONTACT_ID']] = $array2[$i];
}
}
echo "<pre>";
print_r($temp);
echo "</pre>";
结果会是这样的:
Array
(
[5] => Array
(
[F_CONTACT_ID] => 5
[F_CONTACT_FNAME] => name5
[F_CONTACT_NAME] => name55
)
)
我正在使用两个多维数组,下面的区别是我的数组:
数组 1:
Array
(
[0] => Array
(
[F_CONTACT_ID] => 2
[F_CONTACT_FNAME] => name2
[F_CONTACT_NAME] => name22
)
[1] => Array
(
[F_CONTACT_ID] => 3
[F_CONTACT_FNAME] => name3
[F_CONTACT_NAME] => name33
)
)
数组 2:
Array
(
[0] => Array
(
[F_CONTACT_ID] => 2
[F_CONTACT_FNAME] => name2
[F_CONTACT_NAME] => name22
)
[1] => Array
(
[F_CONTACT_ID] => 3
[F_CONTACT_FNAME] => name3
[F_CONTACT_NAME] => name33
)
[2] => Array
(
[F_CONTACT_ID] => 5
[F_CONTACT_FNAME] => name5
[F_CONTACT_NAME] => name55
)
)
我只想比较数组中与 'F_CONTACT_ID' 的差异。
我的结果数组应该是:
结果:
Array
(
[2] => Array
(
[F_CONTACT_ID] => 5
[F_CONTACT_FNAME] => name5
[F_CONTACT_NAME] => name55
)
)
另外如果一个数组是空的:假设Array2是空的。我的结果数组应该是:
Array
(
[0] => Array
(
[F_CONTACT_ID] => 2
[F_CONTACT_FNAME] => name2
[F_CONTACT_NAME] => name22
)
[1] => Array
(
[F_CONTACT_ID] => 3
[F_CONTACT_FNAME] => name3
[F_CONTACT_NAME] => name33
)
)
我尝试了不同的解决方案,但没有任何效果。我试图检索 F_CONTACT_ID 并存储在一维数组中并进行比较,但它花了很多时间。 请帮助我更好更快的解决方案。
您可以试试函数 array-diff-key() 函数,它可以帮助您使用键比较两个多维数组。
您可以访问此页面了解更多信息:http://php.net/manual/en/function.array-diff-key.php
这样的事情怎么样?
$array1;
$array2;
$array3;
foreach ($array1 as $ar1) {
foreach ($array2 as $ar2) {
if ($ar1['F_CONTACT_ID']==$ar2['F_CONTACT_ID']) {
array_push($array3, $ar1);
}
}
}
它不是很优化,为了最大化性能更改第二个 foreach 检查 array_push 是否已经附加(使用 bool 条件)
你试过吗?
for($i=0;$i<count($array1);$i++) {
$temp[$array1[$i]['F_CONTACT_ID']] = $array1[$i];
};
for($i=0;$i<count($array2);$i++) {
if($temp[$array2[$i]['F_CONTACT_ID']]) {
unset($temp[$array2[$i]['F_CONTACT_ID']]);
} else {
$temp[$array2[$i]['F_CONTACT_ID']] = $array2[$i];
}
}
echo "<pre>";
print_r($temp);
echo "</pre>";
结果会是这样的:
Array
(
[5] => Array
(
[F_CONTACT_ID] => 5
[F_CONTACT_FNAME] => name5
[F_CONTACT_NAME] => name55
)
)