Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126

    trasformazione da array

    Ciao a tutti,
    volevo chiedere una mano su questa logica volevo scorrere un array e laddove ci sono 2 o più elementi uguali allora crea un sotto array e così via...

    esempio:

    $array= array("12|a", "12|a", "12|a", "16|a", "21|v", "20|s");

    lunghezza array = count($array) = 6

    $new_array = array(array("12|a", "12|a", "12|a"), "16|a", "21|v", "20|s");

    di conseguenza ho lunghezza array = count($new_array) = 4

    quindi la matrice:

    12|a 12|a 12|a
    16|a
    21|v
    20|s

    spero di essere stato chiaro

    Grazie

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    un po' complicato:
    Codice PHP:
    <?php
    $array
    = array("12|a""12|a""12|a""16|a""21|v""20|s"); 

    $out = array();
    foreach(
    $array as $s){
       if(!isset(
    $out[(int)$s]))
          
    $out[(int)$s] = array();
       
    $out[(int)$s][] = $s;
    }
    $out2 = array();
    foreach(
    $out as $o){
       if(
    count($o) > 1){
           
    $out2[] = $o;
       }else{
            
    $out2[] = $o[0];
       }
    }
     
    print_r($out2);
    ?>
    Ultima modifica di boots; 10-11-2013 a 22:15

  3. #3
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    oppure se l'array è ordinato (per ordinato intendo che i valori uguali sono contigui)
    Codice PHP:
    $array= array("12|a""12|a""12|a""16|a""21|v""20|s");
    $size count($array);
    $out = array();
    $i 0;

    while( 
    $i $size-){    
        if(
    $array[$i] == $array[$i+1]){        
            
    $cmp $array[$i];        
            
    $tmp = array();                
            for(; 
    $i $size && $array[$i] == $cmp$i++){
                   
    $tmp[] = $array[$i];        
            }
             
    $out[] = $tmp;
        }else{         
           
    $out[] = $array[$i];         
           
    $i++;
        }
    }
    if(
    $i $size)   
        
    $out[] = $array[$i];
    print_r($out); 
    Ultima modifica di boots; 11-11-2013 a 13:36

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126
    perfetto!!

    se io volessi ora mettere in array separati partendo dall'array originale
    esempio

    $array= array("12|a", "12|a", "12|a", "13|a", "16|a", "21|v", "21|v");

    ar_1 = array("12|a", "12|a", "12|a");
    ar_2 = array("13|a");
    ar_3 = array("16|a");
    ar_4 = array("21|v", "21|v");

    Grazie
    Ultima modifica di jepers75; 11-11-2013 a 20:36

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    126
    mi rispondo da solo

    $keys = array_keys($out);
    for($a=0; $a<count($out); $a++){


    switch ($a) {
    case 0:
    $ar_1[] = $out[$keys[$a]];
    break;

    case 1:
    $ar_2[] = $out[$keys[$a]];
    break;

    case 2:
    $ar_3[] = $out[$keys[$a]];
    break;

    case 3:
    $ar_4[] = $out[$keys[$a]];
    break;
    }
    }


    alla prossima
    grazie

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.