我有一个数组,它包含大约5000个数组元素,每个元素的格式如下:
Array
(
[keywordid] => 98
[keyword] => sample keyword 34
[type] => NATURAL
[longname] => UK
)
我有第二个数组,它包含如下数值:
Array
(
[0] => 55
[1] => 56
[2] => 57
[3] => 58
[4] => 59
[5] => 1065
[6] => 1066
[7] => 1067
[8] => 1083
)
上面数组中的每个值对应于每个数组中的'keywordid'值 第一个数组。我想对第一个数组进行排序,以便那些其keywordid具有与第二个数组中的元素匹配的值的数组首先出现,其余的数组在没有指定的顺序后出现。我该如何做到这一点?我使用的是PHP 5.3,不需要向后兼容。
感谢帮助。
答案 0 :(得分:2)
我可能会使用usort
usort($array1, function($a, $b) use($array2) {
$k1 = array_search($a['keywordid'], $array2);
$k2 = array_search($b['keywordid'], $array2);
if ($k1 == $k2) {
return 0;
}
return ($k1 < $k2) ? -1 : 1;
});
可能有更好的方法,但首先想到的是。
答案 1 :(得分:-1)
尝试使用此代码来操作该数组:
<?php
//here I assume you have more than one array
$array = array (
0=> array (
"keywordid" => 98,
"keyword" => "sample keyword 34",
"type" => "NATURAL",
"longname" => "UK"),
1=> array (
"keywordid" => 95,
"keyword" => "sample keyword 95",
"type" => "NATURAL 02",
"longname" => "US"),
2=> array (
"keywordid" => 55,
"keyword" => "sample keyword 55",
"type" => "NATURAL 02",
"longname" => "AU")
);
//populate array into new variable
foreach ( $array as $key=> $val){
$out[] = $val["keywordid"];
}
echo "<pre>";
print_r($out);
echo "</pre>";
?>
输出是:
Array
(
[0] => 98
[1] => 95
[2] => 55
)