【问题标题】:multidimensional array sort based on database column value compare基于数据库列值比较的多维数组排序
【发布时间】:2018-02-14 17:00:20
【问题描述】:

我有以下多维数组

Array
(

    [1] => 22
    [2] => 12
    [3] => Array
        (
            [0] => 4
            [1] => 21
        )

    [5] => Array
        (
            [0] => 9
            [1] => 3
        )

    [7] => 7
    [8] => 6
    [9] => 1
    [10] => 2
    [11] => 10
    [12] => 0
    [13] => 23
    [14] => 18
    [15] => 16
    [16] => 19
    [17] => 15
    [18] => 5
    [19] => 8
    [20] => 11
    [21] => 13
    [22] => 17
    [23] => 14
    [24] => 20
)

我想从主数组中对数组下方的多个值进行排序。

Array
(

    [3] => Array
        (
            [0] => 4
            [1] => 21
        )

    [5] => Array
        (
            [0] => 9
            [1] => 3
        )
)

每个键值与数据库列进行比较并对数组进行排序。如果未找到值,则数组保持原样。 例如: 下面的键值是 21 在数据库列中有然后是预期的结果,

[3] => Array
    (

        [0] => 21
        [1] => 4

    )

查找下一个数组,在数据库中没有找到下一个数组键值,然后按预期结果,

[5] => Array
    (

        [0] => 9
        [1] => 3

    )

最终输出寻找,

Array
(

    [1] => 22
    [2] => 12
    [3] => Array
        (
            [0] => 21
            [1] => 4
        )

    [5] => Array
        (
            [0] => 9
            [1] => 3
        )

    [7] => 7
    [8] => 6
    [9] => 1
    [10] => 2
    [11] => 10
    [12] => 0
    [13] => 23
    [14] => 18
    [15] => 16
    [16] => 19
    [17] => 15
    [18] => 5
    [19] => 8
    [20] => 11
    [21] => 13
    [22] => 17
    [23] => 14
    [24] => 20
)

你能帮帮我吗

【问题讨论】:

  • rsort($array[3]) ??
  • 键值 21 是一天中的小时。这个小时应该与数据库列相匹配,我想从数据库中检索行业时间值
  • foreach($array as $key=>$val) { $sql = "select time from table where industryid=$id"; $row = mysql_fetch_row(); if($row['time']==$val) { // 要存储为单独的数组 right } else { } }
  • 我不知道这个

标签: php mysql arrays sorting multidimensional-array


【解决方案1】:

检查一下。

$dump_array=Array('1' => 2,'2' => 12,'3' => Array
    ('0' => 8,'1' => 21 ),
'5' => Array ('0' => 9,'1' => 3),
'7' => 7,
'8' => 64,
'9' => 15,
'10' => 22,

    );
echo "<pre> Soure :"; print_r($dump_array);echo "</pre>";
sort($dump_array);
$result_array=array();
$array_unlist=array();
foreach($dump_array as $key=>$value){
    if(is_array($value)){
        sort($value);
        array_push($array_unlist,$value);
    }
    else {array_push($result_array,$value);}
}
foreach($result_array as $index=>$val){
    foreach($array_unlist as $key=>$digit){
        if($val<$digit[0])
        {
            $res=$index.".5";
            $result_array[$res]=$digit;
        }
    }
}

ksort($result_array);

echo "<pre> Result :"; print_r(array_values($result_array));echo "</pre>";

输出:

 Soure :Array
(
    [1] => 2
    [2] => 12
    [3] => Array
        (
            [0] => 8
            [1] => 21
        )

    [5] => Array
        (
            [0] => 9
            [1] => 3
        )

    [7] => 7
    [8] => 64
    [9] => 15
    [10] => 22
)
 Result :Array
(
    [0] => 2
    [1] => Array
        (
            [0] => 3
            [1] => 9
        )

    [2] => 7
    [3] => Array
        (
            [0] => 8
            [1] => 21
        )

    [4] => 12
    [5] => 15
    [6] => 22
    [7] => 64
)

【讨论】:

  • 感谢您的帮助
【解决方案2】:

试试这个

foreach($array as $k => $v){

        if(is_array($v)){

         rsort($array[$k]); 

        }

}

print_r($array);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多