代码之家  ›  专栏  ›  技术社区  ›  morne

在类中使用arsort

  •  0
  • morne  · 技术社区  · 7 年前

    好吧,事情是这样的。我正在使用PHPStorm。通过单步执行,代码似乎没有在调试器中排序。然而,当我做一个变量转储它排序。所以这个问题是无效的,因为PHPStorm可能有错。

    我正在尝试对类中的关联数组进行排序。
    这是我尝试过的,但没有任何意义。它保持不变。

    arsort($returnArray,SORT_NUMERIC);  
    

    usort

    arsort($returnArray[$soa], array('App\Services\ReportsService','merchantSort'));
    
    private static function merchantSort($a,$b) {
        if ($a == $b) {
            return 0;
        }
        return ($a < $b) ? -1 : 1;
    }
    

    但这让我

    arsort()期望参数2是长的,数组给定

    为什么 arsort 没有按预期工作,我应该怎么做?

    我要按值排序并保留键的数组的剪接。

    $returnArray = array("Ward 1"=>35, "Ward 9"=>37, "Ward 3"=>43, "Ward 6"=>41, "Ward 4"=>4);
    
    3 回复  |  直到 7 年前
        1
  •  0
  •   yunzen    7 年前

    你想要什么 asort

    $returnArray = array(
        "Ward 1"=>35, 
        "Ward 9"=>37, 
        "Ward 3"=>43, 
        "Ward 6"=>41, 
        "Ward 4"=>4
    );
    
    asort($returnArray, SORT_NUMERIC);
    
    print_r($returnArray);
    
    Array
    (
        [Ward 4] => 4
        [Ward 1] => 35
        [Ward 9] => 37
        [Ward 6] => 41
        [Ward 3] => 43
    )
    

    注意:asort函数更改原始数组。如果您不想这样做,则必须先克隆阵列。

    http://sandbox.onlinephpfunctions.com/code/db5f4a3842c5594d2d5830985a7b9c417cf81703

        2
  •  0
  •   Doğan Uçar    7 年前

    尝试以下操作:

    $array = array(1,2,3,4);
    usort($array, array('Namespace\Of\Your\ClassName','functionName'));
    
        3
  •  0
  •   Mike Doe Backs    7 年前

    看起来您的输入数组是关联数组。我猜你想对里面的值进行排序。

    foreach ($inputArray as &$innerArray) {
        arsort($innerArray, SORT_NUMERIC);
    }
    

    特殊项目:

    arsort($inputArray[2], SORT_NUMERIC);
    

    例子:

    <pre>
    <?php
    
    $i = ['Ward 2' => 10, 'Ward 1' => 76];
    
    echo 'Sorting by key descending:';
    krsort($i, SORT_STRING);
    print_r($i);
    
    echo 'Sorting by value descending:';
    arsort($i, SORT_STRING);
    print_r($i);
    
    ?>
    </pre>