dqyy38265 2015-09-02 17:31
浏览 32
已采纳

如何基于非常深的键值对数组进行排序

I have this array:

array(
(int) 0 => array(
    'Inscricao' => array(
        'id' => '89560',
        'codigo' => null,
        'aluno_id' => '28065',
        'turma_id' => '14377',
        'estado_inscricao_id' => '13',
        'nota_frequencia' => '12.00',
        'nota_final' => '10.75',
        'epoca_avaliacao_id' => null,
        'data' => '2014-02-10',
        'created' => '2015-08-31 07:12:42',
        'modified' => '2015-09-02 01:31:00',
        'matricula_id' => '136247',
        'created_by' => null,
        'modified_by' => null,
        'pagamento_id' => null,
        'tipo_inscricao_id' => '1',
        'nota_exame_normal' => '9.50',
        'nota_exame_recorrencia' => null,
        'estado_inscricao' => '2',
        'turma_inscricao_id' => null,
        'turma_frequencia_id' => '14377'
    ),
    'Turma' => array(
        'id' => '14377',
        'ano_lectivo_id' => '30',
        'curso_id' => '18',
        'plano_estudo_id' => '91',
        'turno_id' => null,
        'disciplina_id' => '394',
        'capacidade_maxima' => null,
        'total_aprovados' => null,
        'media_turma' => null,
        'estado_turma_id' => '1',
        'modified' => '2015-08-31 07:02:54',
        'created' => '2015-08-31 07:02:54',
        'total_reprovados' => null,
        'codigo' => '2011',
        'ano_curricular' => '2',
        'semestre_curricular' => '2',
        'name' => 'Sociologia do Desporto - 2014 - Licenciatura em Ciências do Desporto - 2011',
        'semestre_lectivo_id' => '66',
        'sala_aula_id' => null,
        'sequencia' => null,
        'peso_nota_frequencia' => null,
        'peso_nota_exame' => null,
        'nota_minima_frequencia' => null,
        'nota_minima_dispensa' => null,
        'created_by' => null,
        'modified_by' => null,
        'pauta_path' => null,
        'total_alunos' => '44',
        'AnoLectivo' => array(
            'id' => '30',
            'codigo' => '2014',
            'ano' => '2014',
            'num_semestre' => null,
            'data_inicio' => null,
            'data_fim' => null,
            'created' => '2013-10-08 05:13:51',
            'modified' => '2013-10-08 05:13:51',
            'regime_lectivo_id' => null
        ),
        'Curso' => array(
            'name' => 'Licenciatura em Ciências do Desporto'
        ),
        'Turno' => array(),
        'Disciplina' => array(
            'id' => '394',
            'name' => 'Sociologia do Desporto',
            'codigo' => 'SOD',
            'codigo_antigo' => null,
            'created' => '1432892405',
            'modified' => '1432892405',
            'created_by' => '54193',
            'modified_by' => null,
            'unidade_organica_id' => null
        )
    ),
    'EstadoInscricao' => array(
        'id' => '13',
        'name' => 'Aprovado sem Exames'
    ),
    'Matricula' => array(
        'id' => '136247',
        'codigo' => '',
        'aluno_id' => '28065',
        'curso_id' => '18',
        'plano_estudo_id' => '91',
        'data' => '2013-10-30',
        'estado_matricula_id' => '1',
        'modified' => '2015-08-31 06:55:53',
        'created' => '2013-10-31 12:09:43',
        'user_id' => '1',
        'ano_lectivo_id' => '30',
        'turno_id' => '1',
        'nivel' => null,
        'created_by' => '1',
        'modified_by' => null,
        'tipo_matricula_id' => '2',
        'regime_lectivo_id' => null,
        'financeiro_pagamento_id' => null,
        'Aluno' => array(
            'id' => '28065',
            'codigo' => '20115466',
            'user_id' => '28066',
            'data_ingresso' => '1900-01-01',
            'trabalhador' => null,
            'area_trabalho_id' => null,
            'instituicao_id' => null,
            'curso_id' => '18',
            'created' => '2011-03-02 14:15:30',
            'modified' => '2015-08-31 06:55:52',
            'entidade_id' => '28066',
            'numero_estudante' => '20115466',
            'aluno_via_admissao_id' => '13',
            'numero_candidato' => null,
            'ano_ingresso' => '2011',
            'curso_ingresso_id' => '18',
            'created_by' => null,
            'modified_by' => null,
            'nome_encarregado' => null,
            'parentesco_encarregado' => null,
            'telefone_encarregado' => null,
            'telemovel_encarregado' => null,
            'nome_emergencia' => null,
            'telefone_emergencia' => null,
            'telemovel_emergencia' => null,
            'estado_aluno_id' => '1',
            'plano_estudo_id' => '91',
            'data_conclusao' => null,
            'nota_conclusao' => null,
            'certificado_nivel_anterior' => '1',
            'recenseamento_militar' => '1',
            'referencia_renovacao' => null,
            'Entidade' => array(
                'id' => '28066',
                'name' => 'Elisa Luis  Artur',
                'nome_pai' => 'Luís Artur Vasco',
                'nome_mae' => 'Jacinta António',
                'foto' => '20115466.jpg',
                'genero_id' => '2',
                'pais_nascimento' => '152',
                'cidade_morada' => null,
                'bairro_morada' => null,
                'caixa_postal_morada' => null,
                'cidade_ferias' => null,
                'cidade_nascimento' => '809',
                'provincia_nascimento' => null,
                'email' => '',
                'telefone' => '',
                'telemovel' => '825507722',
                'documento_identificacao_id' => null,
                'documento_identificacao_numero' => null,
                'data_nascimento' => '1988-09-20',
                'documento_identificacao_data_emissao' => null,
                'estado_entidade_id' => null,
                'created' => '2011-03-02 14:15:30',
                'modified' => '2013-09-13 10:31:17',
                'user_id' => '28066',
                'documento_identificacao_local_emissao' => null,
                'apelido' => 'Artur',
                'nomes' => 'Elisa Luis ',
                'created_by' => null,
                'modified_by' => null,
                'provincia_ferias' => null,
                'telefone_ferias' => null,
                'telemovel_ferias' => null,
                'avenida_rua' => null,
                'avenida_rua_ferias' => null,
                'agregado_familiar_numero' => null,
                'estado_civil' => '1',
                'documento_identificacao_data_validade' => null,
                'nacionalidade' => '1',
                'codigo' => '41446',
                'naturalidade' => null,
                'nuit' => null,
                'User' => array(
                    'password' => '*****',
                    'id' => '28066',
                    'username' => 'elisa.artur@uem.ac.mz',
                    'codigocartao' => '20115466',
                    'group_id' => '3',
                    'created_by' => null,
                    'modified_by' => null,
                    'ultimo_login' => null,
                    'codigo_activacao' => '1',
                    'estado_objecto_id' => '1',
                    'verificar_permissoes' => '0',
                    'created' => null,
                    'modified' => null,
                    'estado_email' => '0',
                    'timezone' => null,
                    'facebook_id' => null
                )
            )
        )
    )
),
(int) 1 => array(
    'Inscricao' => array(
        'id' => '92162',
        'codigo' => null,
        'aluno_id' => '28446',
        'turma_id' => '14377',
        'estado_inscricao_id' => '10',
        'nota_frequencia' => '10.00',
        'nota_final' => '9.75',
        'epoca_avaliacao_id' => null,
        'data' => '2014-02-11',
        'created' => '2015-08-31 07:31:54',
        'modified' => '2015-09-02 01:31:00',
        'matricula_id' => '130681',
        'created_by' => null,
        'modified_by' => null,
        'pagamento_id' => null,
        'tipo_inscricao_id' => '1',
        'nota_exame_normal' => '9.50',
        'nota_exame_recorrencia' => null,
        'estado_inscricao' => '2',
        'turma_inscricao_id' => null,
        'turma_frequencia_id' => '14377'
    ),
    'Turma' => array(
        'id' => '14377',
        'ano_lectivo_id' => '30',
        'curso_id' => '18',
        'plano_estudo_id' => '91',
        'turno_id' => null,
        'disciplina_id' => '394',
        'capacidade_maxima' => null,
        'total_aprovados' => null,
        'media_turma' => null,
        'estado_turma_id' => '1',
        'modified' => '2015-08-31 07:02:54',
        'created' => '2015-08-31 07:02:54',
        'total_reprovados' => null,
        'codigo' => '2011',
        'ano_curricular' => '2',
        'semestre_curricular' => '2',
        'name' => 'Sociologia do Desporto - 2014 - Licenciatura em Ciências do Desporto - 2011',
        'semestre_lectivo_id' => '66',
        'sala_aula_id' => null,
        'sequencia' => null,
        'peso_nota_frequencia' => null,
        'peso_nota_exame' => null,
        'nota_minima_frequencia' => null,
        'nota_minima_dispensa' => null,
        'created_by' => null,
        'modified_by' => null,
        'pauta_path' => null,
        'total_alunos' => '44',
        'AnoLectivo' => array(
            'id' => '30',
            'codigo' => '2014',
            'ano' => '2014',
            'num_semestre' => null,
            'data_inicio' => null,
            'data_fim' => null,
            'created' => '2013-10-08 05:13:51',
            'modified' => '2013-10-08 05:13:51',
            'regime_lectivo_id' => null
        ),
        'Curso' => array(
            'name' => 'Licenciatura em Ciências do Desporto'
        ),
        'Turno' => array(),
        'Disciplina' => array(
            'id' => '394',
            'name' => 'Sociologia do Desporto',
            'codigo' => 'SOD',
            'codigo_antigo' => null,
            'created' => '1432892405',
            'modified' => '1432892405',
            'created_by' => '54193',
            'modified_by' => null,
            'unidade_organica_id' => null
        )
    ),
    'EstadoInscricao' => array(
        'id' => '10',
        'name' => 'Reprovado'
    ),
    'Matricula' => array(
        'id' => '130681',
        'codigo' => '',
        'aluno_id' => '28446',
        'curso_id' => '97',
        'plano_estudo_id' => null,
        'data' => '2013-10-17',
        'estado_matricula_id' => '1',
        'modified' => '2014-01-13 10:22:24',
        'created' => '2013-10-17 11:18:10',
        'user_id' => '1',
        'ano_lectivo_id' => '30',
        'turno_id' => '2',
        'nivel' => null,
        'created_by' => '1',
        'modified_by' => null,
        'tipo_matricula_id' => '2',
        'regime_lectivo_id' => null,
        'financeiro_pagamento_id' => null,
        'Aluno' => array(
            'id' => '28446',
            'codigo' => '20116158',
            'user_id' => '28447',
            'data_ingresso' => '1900-01-01',
            'trabalhador' => null,
            'area_trabalho_id' => null,
            'instituicao_id' => null,
            'curso_id' => '97',
            'created' => '2011-03-25 10:07:04',
            'modified' => '2013-06-16 22:17:58',
            'entidade_id' => '28447',
            'numero_estudante' => '20116158',
            'aluno_via_admissao_id' => '13',
            'numero_candidato' => null,
            'ano_ingresso' => '2012',
            'curso_ingresso_id' => '18',
            'created_by' => null,
            'modified_by' => null,
            'nome_encarregado' => null,
            'parentesco_encarregado' => null,
            'telefone_encarregado' => null,
            'telemovel_encarregado' => null,
            'nome_emergencia' => null,
            'telefone_emergencia' => null,
            'telemovel_emergencia' => null,
            'estado_aluno_id' => '1',
            'plano_estudo_id' => null,
            'data_conclusao' => null,
            'nota_conclusao' => null,
            'certificado_nivel_anterior' => '1',
            'recenseamento_militar' => '1',
            'referencia_renovacao' => null,
            'Entidade' => array(
                'id' => '28447',
                'name' => 'Paulo José  Pelembe',
                'nome_pai' => 'Mundau José Pelembe',
                'nome_mae' => 'Rosa Fomo',
                'foto' => '20116158.jpg',
                'genero_id' => '1',
                'pais_nascimento' => '152',
                'cidade_morada' => null,
                'bairro_morada' => null,
                'caixa_postal_morada' => null,
                'cidade_ferias' => null,
                'cidade_nascimento' => '1101',
                'provincia_nascimento' => null,
                'email' => '',
                'telefone' => '',
                'telemovel' => '828352330',
                'documento_identificacao_id' => null,
                'documento_identificacao_numero' => null,
                'data_nascimento' => '1976-12-17',
                'documento_identificacao_data_emissao' => null,
                'estado_entidade_id' => null,
                'created' => '2011-03-25 10:07:03',
                'modified' => '2013-09-13 10:37:47',
                'user_id' => '28447',
                'documento_identificacao_local_emissao' => null,
                'apelido' => 'Pelembe',
                'nomes' => 'Paulo José ',
                'created_by' => null,
                'modified_by' => null,
                'provincia_ferias' => null,
                'telefone_ferias' => null,
                'telemovel_ferias' => null,
                'avenida_rua' => null,
                'avenida_rua_ferias' => null,
                'agregado_familiar_numero' => null,
                'estado_civil' => '1',
                'documento_identificacao_data_validade' => null,
                'nacionalidade' => '1',
                'codigo' => '41832',
                'naturalidade' => null,
                'nuit' => null,
                'User' => array(
                    'password' => '*****',
                    'id' => '28447',
                    'username' => 'paulo.pelembe@uem.ac.mz',
                    'codigocartao' => '20116158',
                    'group_id' => '3',
                    'created_by' => null,
                    'modified_by' => null,
                    'ultimo_login' => null,
                    'codigo_activacao' => '1',
                    'estado_objecto_id' => '1',
                    'verificar_permissoes' => '0',
                    'created' => null,
                    'modified' => null,
                    'estado_email' => '0',
                    'timezone' => null,
                    'facebook_id' => null
                )
            )
        )
    )
),
(int) 2 => array(
    'Inscricao' => array(
        'id' => '92200',
        'codigo' => null,
        'aluno_id' => '28504',
        'turma_id' => '14377',
        'estado_inscricao_id' => '13',
        'nota_frequencia' => '10.00',
        'nota_final' => '10.25',
        'epoca_avaliacao_id' => null,
        'data' => '2014-02-10',
        'created' => '2015-08-31 07:32:17',
        'modified' => '2015-09-02 01:31:00',
        'matricula_id' => '141228',
        'created_by' => null,
        'modified_by' => null,
        'pagamento_id' => null,
        'tipo_inscricao_id' => '1',
        'nota_exame_normal' => '8.50',
        'nota_exame_recorrencia' => '10.50',
        'estado_inscricao' => '2',
        'turma_inscricao_id' => null,
        'turma_frequencia_id' => '14377'
    ),
    'Turma' => array(
        'id' => '14377',
        'ano_lectivo_id' => '30',
        'curso_id' => '18',
        'plano_estudo_id' => '91',
        'turno_id' => null,
        'disciplina_id' => '394',
        'capacidade_maxima' => null,
        'total_aprovados' => null,
        'media_turma' => null,
        'estado_turma_id' => '1',
        'modified' => '2015-08-31 07:02:54',
        'created' => '2015-08-31 07:02:54',
        'total_reprovados' => null,
        'codigo' => '2011',
        'ano_curricular' => '2',
        'semestre_curricular' => '2',
        'name' => 'Sociologia do Desporto - 2014 - Licenciatura em Ciências do Desporto - 2011',
        'semestre_lectivo_id' => '66',
        'sala_aula_id' => null,
        'sequencia' => null,
        'peso_nota_frequencia' => null,
        'peso_nota_exame' => null,
        'nota_minima_frequencia' => null,
        'nota_minima_dispensa' => null,
        'created_by' => null,
        'modified_by' => null,
        'pauta_path' => null,
        'total_alunos' => '44',
        'AnoLectivo' => array(
            'id' => '30',
            'codigo' => '2014',
            'ano' => '2014',
            'num_semestre' => null,
            'data_inicio' => null,
            'data_fim' => null,
            'created' => '2013-10-08 05:13:51',
            'modified' => '2013-10-08 05:13:51',
            'regime_lectivo_id' => null
        ),
        'Curso' => array(
            'name' => 'Licenciatura em Ciências do Desporto'
        ),
        'Turno' => array(),
        'Disciplina' => array(
            'id' => '394',
            'name' => 'Sociologia do Desporto',
            'codigo' => 'SOD',
            'codigo_antigo' => null,
            'created' => '1432892405',
            'modified' => '1432892405',
            'created_by' => '54193',
            'modified_by' => null,
            'unidade_organica_id' => null
        )
    ),
    'EstadoInscricao' => array(
        'id' => '13',
        'name' => 'Aprovado sem Exames'
    ),
    'Matricula' => array(
        'id' => '141228',
        'codigo' => '',
        'aluno_id' => '28504',
        'curso_id' => '18',
        'plano_estudo_id' => '91',
        'data' => '2013-10-31',
        'estado_matricula_id' => '1',
        'modified' => '2015-08-31 06:56:21',
        'created' => '2013-11-01 07:56:44',
        'user_id' => '1',
        'ano_lectivo_id' => '30',
        'turno_id' => '1',
        'nivel' => null,
        'created_by' => '1',
        'modified_by' => null,
        'tipo_matricula_id' => '2',
        'regime_lectivo_id' => null,
        'financeiro_pagamento_id' => null,
        'Aluno' => array(
            'id' => '28504',
            'codigo' => '20116434',
            'user_id' => '28505',
            'data_ingresso' => '1900-01-01',
            'trabalhador' => null,
            'area_trabalho_id' => null,
            'instituicao_id' => null,
            'curso_id' => '18',
            'created' => '2011-03-28 12:12:43',
            'modified' => '2015-08-31 06:56:21',
            'entidade_id' => '28505',
            'numero_estudante' => '20116434',
            'aluno_via_admissao_id' => '13',
            'numero_candidato' => null,
            'ano_ingresso' => '2011',
            'curso_ingresso_id' => '18',
            'created_by' => null,
            'modified_by' => null,
            'nome_encarregado' => null,
            'parentesco_encarregado' => null,
            'telefone_encarregado' => null,
            'telemovel_encarregado' => null,
            'nome_emergencia' => null,
            'telefone_emergencia' => null,
            'telemovel_emergencia' => null,
            'estado_aluno_id' => '1',
            'plano_estudo_id' => '91',
            'data_conclusao' => null,
            'nota_conclusao' => null,
            'certificado_nivel_anterior' => '1',
            'recenseamento_militar' => '1',
            'referencia_renovacao' => null,
            'Entidade' => array(
                'id' => '28505',
                'name' => 'Lina Mário Matola',
                'nome_pai' => 'Mário Augusto Matola',
                'nome_mae' => 'Lina Albino Manjate',
                'foto' => '20116434.jpg',
                'genero_id' => '2',
                'pais_nascimento' => '152',
                'cidade_morada' => null,
                'bairro_morada' => null,
                'caixa_postal_morada' => null,
                'cidade_ferias' => null,
                'cidade_nascimento' => '1101',
                'provincia_nascimento' => null,
                'email' => 'linamario16@yahoo.com.br                     ',
                'telefone' => '',
                'telemovel' => '828322450',
                'documento_identificacao_id' => null,
                'documento_identificacao_numero' => null,
                'data_nascimento' => '1988-04-13',
                'documento_identificacao_data_emissao' => null,
                'estado_entidade_id' => null,
                'created' => '2011-03-28 12:12:42',
                'modified' => '2013-09-13 10:38:41',
                'user_id' => '28505',
                'documento_identificacao_local_emissao' => null,
                'apelido' => 'Matola',
                'nomes' => 'Lina Mário',
                'created_by' => null,
                'modified_by' => null,
                'provincia_ferias' => null,
                'telefone_ferias' => null,
                'telemovel_ferias' => null,
                'avenida_rua' => null,
                'avenida_rua_ferias' => null,
                'agregado_familiar_numero' => null,
                'estado_civil' => '1',
                'documento_identificacao_data_validade' => null,
                'nacionalidade' => '1',
                'codigo' => '41891',
                'naturalidade' => null,
                'nuit' => null,
                'User' => array(
                    'password' => '*****',
                    'id' => '28505',
                    'username' => 'lina.matola@uem.ac.mz',
                    'codigocartao' => '20116434',
                    'group_id' => '3',
                    'created_by' => null,
                    'modified_by' => null,
                    'ultimo_login' => null,
                    'codigo_activacao' => '1',
                    'estado_objecto_id' => '1',
                    'verificar_permissoes' => '0',
                    'created' => null,
                    'modified' => null,
                    'estado_email' => '0',
                    'timezone' => null,
                    'facebook_id' => null
                )
            )
        )
    )
),
(int) 3 => array(

and I want to sort this based on key "apelido". What is the best way to do this in PHP?

Note: the Key apelido is in [0]['Matricula']['Aluno']['Entidade']['apelido'].

NOTE 2: This is a result of CakePHP find with Containable. Is there a way that cake could sort it during find?

  • 写回答

1条回答 默认 最新

  • dongzhi6382 2015-09-02 18:39
    关注

    Use Hash::sort(), it accepts a path in Hash path syntax format, allowing to specify deeply nested paths.

    $sorted = Hash::sort($data, '{n}.Matricula.Aluno.Entidade.apelido');
    

    Further arguments define the sort order, and the sort type, see Cookbook > Core Libraries > Utilities > Hash > Hash::sort() for more information.

    If you want to have this being returned sorted by the find call, you could for example modify the results in the Model::afterFind() callback, or in a custom finder, see

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝