这是我的数组,我如何按saleref排序?
Array
(
[xml] => Array
(
[sale] => Array
(
[0] => Array
(
[saleref] => 12345
[saleline] => 1
[product] => producta
[date] => 19/ 3/10
[manifest] => 0
[qty] => 1
[nextday] =>
[order_status] =>
)
[1] => Array
(
[saleref] => 12344
[saleline] => 1
[product] => productb
[date] => 18/ 3/10
[manifest] => 11892
[qty] => 1
[nextday] =>
[order_status] =>
)
答案 0 :(得分:5)
function cmp($a, $b) {
if ($a['saleref'] == $b['saleref']) {
return 0;
}
return ($a['saleref'] < $b['saleref']) ? -1 : 1;
}
uasort($array['xml']['sale'], 'cmp');
答案 1 :(得分:1)
如果您需要maintain index association使用uasort()
。
否则usort()
would work
示例代码,取消了手动注释并进行了调整:
function sortSalesRef($a, $b) {
$a = $a['saleref'];
$b = $b['saleref'];
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
usort($xml['xml']['sale'], 'sortSalesRef');
答案 2 :(得分:0)
E.g。使用uasort()
示例脚本:
$data = getData();
uasort($data['xml']['sale'], function($a, $b) { return strcasecmp($a['saleref'], $b['saleref']); });
print_r($data);
function getData() {
return array(
'xml' => array(
'sale' => array (
array(
'saleref' => '12345',
'saleline' => 1,
'product' => 'producta',
'date' => '19/ 3/10',
'manifest' => 0,
'qty' => 1,
'nextday' => false,
'order_status' => false
),
array(
'saleref' => '12344',
'saleline' => 1,
'product' => 'productb',
'date' => '18/ 3/10',
'manifest' => 11892,
'qty' => 1,
'nextday' => false,
'order_status' => false
)
)
)
);
}
答案 3 :(得分:0)
<?php
// Comparison function
function cmp($a, $b)
{
if ($a == $b)
{
return 0;
}
return ($a < $b) ? -1 : 1;
}
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);
uasort($array, 'cmp');
print_r($array);
?>