如何对包含破折号的数字进行排序


How to sort number having dash included in it?

以下数组需要按计划排序_no字段

阵列([0]=>stdClass对象([计划_no]=>100-3[件]=>0)[1] =>stdClass对象([计划_no]=>100[件]=>0)[2] =>stdClass对象([计划_no]=>100-2[件]=>0)[3] =>stdClass对象([计划_no]=>100[件]=>148)[4] =>stdClass对象([计划_no]=>102[件]=>0)[5] =>stdClass对象([计划_no]=>100-1[件]=>0))

我想要以下格式的阵列

阵列([0]=>stdClass对象([计划_no]=>100[件]=>0)[1] =>stdClass对象([计划_no]=>100[件]=>148)[2] =>stdClass对象([计划_no]=>100-1[件]=>0)[3] =>stdClass对象([计划_no]=>100-2[件]=>0)[4] =>stdClass对象([计划_no]=>100-3[件]=>0)[5] =>stdClass对象([计划_no]=>102[件]=>0))

使用php array_multsort()函数。

在这里观看直播

工作代码:

<?php
$values = array();
$a = new stdClass();
$a->planning_no = '100-3';
$a->pieces = '0';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '100';
$a->pieces = '0';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '100-2';
$a->pieces = '0';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '100';
$a->pieces = '148';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '102';
$a->pieces = '0';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '100-1';
$a->pieces = '0';
$values[] = $a;
$n = array();
if (! empty($values)) {
 foreach ($values as $value) {
  $planning_no = str_replace('-', '.', $value->planning_no);
  $n[] = array('planning_no' => $planning_no, 'pieces' => $value->pieces);
 }
}
array_multisort($n);
$final = array();
if (! empty($n)) {
 foreach ($n as $elem) {
  $planning_no = str_replace('.', '-', $elem['planning_no']);
  $a = new stdClass();
  $a->planning_no = $planning_no;
  $a->pieces = $elem['pieces'];
  $final[] = $a;
 }
}
echo '<pre>';print_r($final);echo '</pre>';
?>

输出:

Array
(
    [0] => stdClass Object
        (
            [planning_no] => 100
            [pieces] => 0
        )
    [1] => stdClass Object
        (
            [planning_no] => 100
            [pieces] => 148
        )
    [2] => stdClass Object
        (
            [planning_no] => 100-1
            [pieces] => 0
        )
    [3] => stdClass Object
        (
            [planning_no] => 100-2
            [pieces] => 0
        )
    [4] => stdClass Object
        (
            [planning_no] => 100-3
            [pieces] => 0
        )
    [5] => stdClass Object
        (
            [planning_no] => 102
            [pieces] => 0
        )
)