簡體   English   中英

排序和顯示數組首先響應(php)

[英]sort & display array with most values first in response (php)

我有以下內容:

        $myData = array();

        while ($list = oci_fetch_array($stid, OCI_ASSOC)) {
            array_push($myData, $list);
        }
    
        header('Content-Type: application/json');
        // echo json_encode($myData); 
        echo "{\"data\":" .json_encode($myData). "}"; // contains multiple arrays

其中通過sql查詢內容填充kendo網格表..問題是kendo使用第一個數組來創建列並且第一個輸出的數組小於此后的大多數數組......

怎么可能我有點我上面的輸出,包括/輸出我最長的陣列的第一,所以我的劍道將得到所有的報頭數據來填充最大列

要按內部數組的長度降序排序,您需要將第二個參數的長度與回調中的第一個參數進行比較; 您需要根據長度是否大於、小於或等於另一個返回正值、負值或零值。 你可以簡單地通過減法來做到這一點。 例如:

$myData = array(
    array('key2' => 'value1', 'key3' => 'value1', 'key4' => 'value4'),
    array('key4' => 'value4'),
    array('key1' => 'value1', 'key4' => 'value4'),
    array('key1' => 'value1', 'key2' => 'value1', 'key3' => 'value1', 'key4' => 'value4')
);

usort($myData, function ($a, $b) { return count($b) - count($a); });

print_r($myData);

輸出:

Array
(
    [0] => Array
        (
            [key1] => value1
            [key2] => value1
            [key3] => value1
            [key4] => value4
        )
    [1] => Array
        (
            [key2] => value1
            [key3] => value1
            [key4] => value4
        )
    [2] => Array
        (
            [key1] => value1
            [key4] => value4
        )
    [3] => Array
        (
            [key4] => value4
        )
)

3v4l.org 上的演示

請注意,您可以通過對新數組進行 json 編碼來生成所需的輸出,而不是自己創建 JSON(這可能容易出錯):

echo json_encode(array('data' => $myData));

輸出(對於我的示例數據):

{
    "data": [
        {
            "key1": "value1",
            "key2": "value1",
            "key3": "value1",
            "key4": "value4"
        },
        {
            "key2": "value1",
            "key3": "value1",
            "key4": "value4"
        },
        {
            "key1": "value1",
            "key4": "value4"
        },
        {
            "key4": "value4"
        }
    ]
}

如果所有數組都是一維的,那么這可能會有所幫助:

<?php

usort($myData, function ($a, $b) { return count($a) < count($b); });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM