我目前有一个关联的值数组,我需要根据另一个数组中的值进行排序。
示例:
如果我有一组值, AssocArray ='122'=>'12','123'=>'32','232'=>'54','343'=> '12'
我需要针对另一个值数组进行检查, orderArray ='232','123'
如果存在,则将值推送到AssocArray的顶部。所以最终的数组看起来像这样。
AssocArray ='232'=>'54','123'=>'32','122'=>'12','343'=> '12'
抱歉,我没有任何正常工作的代码,我还在学习PHP。
任何帮助都会非常感激:)谢谢。
答案 0 :(得分:2)
循环浏览$orderArray
,并检查$AssocArray
中是否存在具有该密钥的元素。如果是,请将该元素添加到$result
数组中,然后将其从原始$AssocArray
中删除。然后,您只需将$AssocArray
中的其余元素与推送到$results
数组顶部的任何内容合并:
$AssocArray = array( '122'=>'12', '123'=>'32', '232'=>'54', '343'=>'12');
$orderArray = array( '232', '123');
rsort( $orderArray, SORT_STRING); // Make sure the order array is sorted from highest to lowest
$result = array();
foreach( $orderArray as $key) {
if( isset( $AssocArray[ $key ])) {
$result[$key] = $AssocArray[ $key ];
unset( $AssocArray[ $key ]);
}
}
foreach( $AssocArray as $k => $v) {
$result[$k] = $v;
}
print_r( $result); // Print the resulting array
您可以看到this prints:
Array
(
[232] => 54
[123] => 32
[122] => 12
[343] => 12
)
答案 1 :(得分:0)
$orderArray = array("232", "123");
function customSort($key1, $key2){
$key1Pos = array_search($key1, $orderArray);
$key2Pos = array_search($key2, $orderArray);
if($key1Pos !== NULL && $key2Pos != NULL){
return $key1Pos - $key2Pos;
}else if($key1Pos === NULL){
return 1;
}else{
return -1;
}
}
uksort($array, "customSort");