Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    79

    Ordinamento Array Multidimensionale

    Salve,
    ho un problema con un array associativo strutturato in questo modo:


    codice:
    Array:
             [element]:5646
                [id]:5646
                [disp]:Y
                [fares]
                  [0]
                    [nunit]:2
                    [price]:55
                 [1]
                    [nunit]:1
                    [price]:22
                 [2]
                    [nunit]:3
                    [price]:33
             [element]:6545
                [id]:6545
                [disp]:Y
                [fares]
                  [0]
                    [nunit]:1
                    [price]:23
                 [1]
                    [nunit]:5
                    [price]:19
    Vorrei che gliu elementi in fares fossero ordinati in base al valore di price senza perdere ovviamente le relative associazioni.

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    prendendo in considerazione solamente l'array multidimensionale 'fares'

    Codice PHP:
      $l = array(
          array(
              
    'nunit' => 2,
              
    'price' => 55 
          
    ),
          array(
              
    'nunit' => 1,
              
    'price' => 22 
          
    ),
          array(
              
    'nunit' => 3,
              
    'price' => 33 
          
    )
      ); 
    puoi utilizzare la funzione usort per l'ordinamento, es.

    Codice PHP:
      function myCmp$left$right ) {
          return (
    $left['price'] < $right['price'] ) ? -1;
      }

      
    usort$l'myCmp' ); 

    dump dei dati

    Codice PHP:
    array(3) {
      [
    0]=>
      array(
    2) {
        [
    "nunit"]=>
        
    int(1)
        [
    "price"]=>
        
    int(22)
      }
      [
    1]=>
      array(
    2) {
        [
    "nunit"]=>
        
    int(3)
        [
    "price"]=>
        
    int(33)
      }
      [
    2]=>
      array(
    2) {
        [
    "nunit"]=>
        
    int(2)
        [
    "price"]=>
        
    int(55)
      }

    Per applicare l'algoritmo ad ogni elemento basta implementarlo all'interno di un ciclo.

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    79
    Grazie per il prezioso suggerimento.
    Sto pero' avendo qualche problema col ciclo:


    Codice PHP:
    function myCmp($left,$right) {
      return (
    $left['price'] < $right['price']) ? -1;
    }

    foreach (
    $item['fares'] as $l){
                  
    usort$l'myCmp');

    Credo non riesca a scorrere correttamente l'array.

  4. #4
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    mettiamo caso che l'array da te proposto si chiami $element,
    il ciclo dovrebbe essere qualcosa del genere

    Codice PHP:
    foreach($element AS $k => $v){
      if( 
    $k == 'fares') {
        
    usort$v'myCmp' );
      }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.