Estrazione elemento unico da array php

di il
4 risposte

Estrazione elemento unico da array php

Ciao a tutti,
ho un problema con l'estrazione dati da un array.
L'array è composto in questo modo: per ciascuna chiave 'room_type_id' esistono 'n' elementi 'real_availability'. Un esempio:

room_type_id = 1
real_availability[0] = 12
real_availability[1] = 8
real_availability[2] = 5
real_availability[3] = 34
...
room_type_id = 2
real_availability[0] = 7
real_availability[1] = 13
real_availability[2] = 42
real_availability[3] = 14
real_availability[4] = 1
...
Lo script che utilizzo è il seguente:

foreach($d_json['availabilities'] as $item)
{
for($i=0; $i<sizeof($item['real_availability']); $i++)
{
     $csv .= ''.$item['room_type_id'].','.$item['real_availability'][$i].','.'' . "\n";
}
}
print_r($csv);
il risultato dello script di cui sopra è dato dalla seguente sequenza:
room_type_id,real_availability(1) ,room_type_id,real_availability(2), room_type_id,real_availability(3), .... Esempio:
1,12 - 1,8 - 1,5 - 1,34
2,7 - 2,13 - 2,42 - 2,14 - 2,1

mentre a me servirebbe:
room_type_id, real_availability(1), real_availability(2), real_availability(3), ... Esempio:
1 - 12,8,5,34
2 - 7,13,42,14,1

Mi sapete dire come devo modificare l'assegnazione di $csv ?
Grazie

4 Risposte

  • Re: Estrazione elemento unico da array php

    Ciao,
    prova così
    
    <?php
    foreach($d_json['availabilities'] as $item)
    {   
        $csv .= $item['room_type_id'] . " - " . implode(",", $item['real_availability']) . "\n";
    }
    
    la funzione implode() permette di unire tutti gli elementi di un array separati dal primo parametro (in questo caso la ,)
  • Re: Estrazione elemento unico da array php

    Se il tuo Array è così costruito:
    
    
    $array = array	(1   =>[0   => 12,
                                     1   => 8,
                                     2   => 5,
                                   	 3   => 34,
                                	],
        
                        	2   =>[0   => 7,
                                     1   => 13,
                                     2   => 42,
                                     3   => 14,
                                     4   => 1,
                                	]
                    	);
                    	
    
    Se fosse così, il codice è questo e ti inserisce le stringhe in un array.
    
    
    foreach ($array as $c => $valore1){
    	$indice = $c." - ";
    	foreach ($valore1 as $valore2){
                    $str .= $valore2.", ";
    	}
    $strOK = substr($indice.$str, 0, -2);
    $arrayStr[$c] =  $strOK;
    $str="";
    };
                    
                 
    print_r($arrayStr);
    
    
    Se vuoi una stringa unica su due righe:
    
     
    foreach ($array as $c => $valore1){
    	$indice = $c." - ";
    	foreach ($valore1 as $valore2){
                    $str .= $valore2.", ";
    	}
    $strOK .= substr($indice.$str, 0, -2).PHP_EOL;
    $str="";
    };
    
    
    il "$c" nell' indice dell' "$arrayStr" serve per matenere l'indice della matrice principale, cioè "1" e "2", altrimenti non metti il "c$" e avrai "0" e "1".

    Spero di esserti stato di aiuto. Dell' array che hai scritto, per me non è chiaro. L'array si scrive come lo vedi nel codice sopra.

    Ciao e buona serata.
  • Re: Estrazione elemento unico da array php

    Grazie mille.
  • Re: Estrazione elemento unico da array php

    Lieto di averti aiutato. L'importante è che capisci cosa ti ho scritto.
    Utilizza il foreach che non devi pensare quante righe ci sono nell'array.

    Ciao
Devi accedere o registrarti per scrivere nel forum
4 risposte