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

php排序数组的-ksort在数组合并后不会有任何不同

php
  •  0
  • Pluda  · 技术社区  · 6 年前

    我为此苦苦挣扎了几个小时,但没办法做到这一点。 我有两组假期,一组是有特定日期的,另一组是没有固定日期的,比如复活节。 我想合并并按日期排序,我用的是m m dd

    我怎样才能做到这一点?

    我的密码

    $feriados_nacionais = array(
        $janeiro = array("01-01" => "Dia de Ano Novo"),
        $fevereiro = array(),
        $marco = array(),
        $abril = array("04-25" => "Dia da Liberdade"),
        $maio = array("05-01" => "Dia do trabalhador"),
        $junho = array("06-10" => "Dia de Portugal, dia de Camões e das Comunidades"),
        $julho = array(),
        $agosto = array("08-15" => "Assunção de Nossa Senhora"),
        $setembro = array(),
        $outubro = array("10-05" => "Implantação da República"),
        $novembro = array("11-01" => "Dia de todos os Santos"),
        $dezembro = array("12-01" => "Dia da Restauração da Independência", "12-08" => "Dia da Imaculada Conceição", "12-25" => "Dia de Natal")
    );
    
    $feriados_moveis  = array(
        array($sexta_feira_santa => "Sexta-feira Santa"),
        array($dia_e_mes_pascoa => "Domingo de Páscoa"),
        array($corpo_de_deus => "Corpo de Deus")
    );
    
    $feriados_nacionais = array_merge($feriados_nacionais, $feriados_moveis);
    ksort($feriados_nacionais);
    print_r($feriados_nacionais);
    

    输出

    Array ( [01-01] => Dia de Ano Novo )
    Array ( )
    Array ( )
    Array ( [04-25] => Dia da Liberdade )
    Array ( [05-01] => Dia do trabalhador )
    Array ( [06-10] => Dia de Portugal, dia de Camões e das Comunidades )
    Array ( )
    Array ( [08-15] => Assunção de Nossa Senhora )
    Array ( )
    Array ( [10-05] => Implantação da República )
    Array ( [11-01] => Dia de todos os Santos )
    Array ( [12-01] => Dia da Restauração da Independência [12-08] => Dia da Imaculada Conceição [12-25] => Dia de Natal )
    Array ( [03-29] => Sexta-feira Santa )
    Array ( [03-31] => Domingo de Páscoa )
    Array ( [05-30] => Corpo de Deus )
    

    请注意,即使在ksort之后,最后3项仍在输出的末尾

    有什么帮助吗?

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  0
  •   u_mulder    6 年前

    要修复的行是:

    $feriados_nacionais = array_merge(...array_merge($feriados_nacionais, $feriados_moveis));
    

    无变量( ... )参数支持:

    $feriados_nacionais = call_user_func_array(
        'array_merge', 
        array_merge($feriados_nacionais, $feriados_moveis)
    );