我有以下数组,并且可以随时更改。
Array
(
[For Sale] => For Sale
[Sold] => Sold
[To Let] => To Let
[Let] => Let
[Under Offer] => Under Offer
[Exchanged] => Exchanged
[Withdrawn] => Withdrawn
[Acquired] => Acquired
)
无论初始序列是什么,但是当页面加载时,它应该看起来像
Array
(
[For Sale] => For Sale
[Under Offer] => Under Offer
[Exchanged] => Exchanged
[Withdrawn] => Withdrawn
[Acquired] => Acquired
[Sold] => Sold
[To Let] => To Let
[Let] => Let
)
基本上这三个元素应该保留在数组的底部。
[Sold] => Sold
[To Let] => To Let
[Let] => Let
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
让您的数组名称为$arr
。
首先将值存储在变量中然后取消设置,之后使用array_push
将它们存储在数组的最后一个。
$sold = $arr['Sold'];
unset($arr['Sold']);
$to_let = $arr['To Let'];
unset($arr['To Let']);
$let = $arr['Let'];
unset($arr['Let']);
array_push($arr, $sold, $to_let, $let);
答案 1 :(得分:1)
您必须使用foreach格式化数据。
$data = [
'For Sale' => For Sale
'Sold' => Sold
'To Let' => To Let
'Let' => Let
'Under Offer' => Under Offer
'Exchanged' => Exchanged
'Withdrawn' => Withdrawn
'Acquired' => Acquired
];
$newData = [];
foreach($data as $key => $val) {
$newData[] = [
'For Sale' => $val['For Sale'],
'Under Offer' => $val['Under Offer'],
'Exchanged' => $val['Exchanged'],
'Withdrawn' => $val['Withdrawn'],
'Acquired' => $val['Acquired'],
'Sold' => $val['Sold'],
'To Let' => $val['To Let'],
'Let' => $val['Let']
]
}
print_r($newData);
答案 2 :(得分:1)
在这里,我使用in_array()
将密钥与给定密钥'Sold','To Let','Let'
匹配,然后从$input
数组中取消该密钥并将该密钥值推送到数组。
<?php
$input = array(
'For Sale' => 'For Sale',
'Sold' => 'Sold',
'To Let' => ' To Let',
'Let' => 'Let',
'Under Offe' => 'Under Offer',
'Exchanged' => 'Exchanged',
'Withdrawn' => 'Withdrawn',
'Acquired' => 'Acquired'
);
foreach ($input as $key => $val) {
if (in_array($key, array('Sold', 'To Let', 'Let'))) {
unset($input[$key]);
$input[$key] = $val;
}
}
echo "<pre>";
print_r($input);
?>
这将输出:
Array
(
[For Sale] => For Sale
[Under Offe] => Under Offer
[Exchanged] => Exchanged
[Withdrawn] => Withdrawn
[Acquired] => Acquired
[Sold] => Sold
[To Let] => To Let
[Let] => Let
)
答案 3 :(得分:0)
使用array_multisort
函数和“自定义顺序”(几个维度排序)的简短有效的解决方案:
// $arr is your initial array
$custom_order = ['F'=> 0,'S' => 5,'T' => 6,'L' =>7,'U' => 1,'E' => 2,'W' => 3,'A' => 4];
array_multisort($custom_order, SORT_ASC, $arr);
print_r($arr);
输出:
Array
(
[For Sale] => For Sale
[Under Offer] => Under Offer
[Exchanged] => Exchanged
[Withdrawn] => Withdrawn
[Acquired] => Acquired
[Sold] => Sold
[To Let] => To Let
[Let] => Let
)
使用uksort
和array_search
函数的其他(更好)方法:
$custom_order = ['For Sale','Under Offer','Exchanged','Withdrawn','Acquired','Sold','To Let','Let'];
uksort($arr, function($a, $b) use($custom_order){
return array_search($a,$custom_order) - array_search($b,$custom_order);
});