在响应中首先排序并显示具有最多值的数组 (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 网格 table.. 问题是第一个数组被 kendo 使用来创建列,并且首先输出的数组小于此后的大多数数组...
我如何将上面的输出排序为 include/output 我最长的数组 第一个 所以我的 kendo 将获取所有 header 数据以填充最大列数
如果所有数组都是一维的,那么这也许会有所帮助:
<?php
usort($myData, function ($a, $b) { return count($a) < count($b); });
要按内部数组的长度降序排序,您需要比较回调中第二个参数与第一个参数的长度;您需要 return 一个正值、负值或零值,具体取决于长度是大于、小于还是等于另一个。您可以简单地通过减法来做到这一点。例如:
$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
)
)
请注意,与其自己创建 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"
}
]
}
我有以下内容:
$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 网格 table.. 问题是第一个数组被 kendo 使用来创建列,并且首先输出的数组小于此后的大多数数组...
我如何将上面的输出排序为 include/output 我最长的数组 第一个 所以我的 kendo 将获取所有 header 数据以填充最大列数
如果所有数组都是一维的,那么这也许会有所帮助:
<?php
usort($myData, function ($a, $b) { return count($a) < count($b); });
要按内部数组的长度降序排序,您需要比较回调中第二个参数与第一个参数的长度;您需要 return 一个正值、负值或零值,具体取决于长度是大于、小于还是等于另一个。您可以简单地通过减法来做到这一点。例如:
$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
)
)
请注意,与其自己创建 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"
}
]
}