Visualizzazione dei risultati da 1 a 7 su 7

Discussione: invertire ordine array

  1. #1

    invertire ordine array

    salve, vorrei fare una select dell'ordine inverso di un array. ho questo script

    codice:
    $pieces = explode("|", $last_v);
    krsort($pieces);
    print_r($pieces);
    $w=count($pieces);
    
    	$sql= "select id from members where ";
    	if ($last_v!='') {
    		$i="0";
    		for($i=0;$i<$w;$i++) {
    		$sql=$sql . "id='$pieces[$i]'";
    		if ($i<$w-1) { $sql = $sql . " or "; }
    		} //for
    	$sql = $sql . " order by id desc";
    	} else { // if pieno
    		echo "array vuoto";
    	}
    e il risultato è

    codice:
    Array ( [4] => 27 [3] => 27 [2] => 32 [1] => 31 [0] => 30 ) 
    
    select id from members where id='30' or id='31' or id='32' or id='27' or id='27' order by id desc
    ovvero, l'array me lo inverte, ma poi nella select mi riprende l'ordine originario dell'array..
    probabilmente dovrei invertire anche gli indici dell'array oltre ai valori, ma non ho trovato una funzione che lo fa.

    Qualche aiuto ?

  2. #2
    Per invertire l'ordine di un array puoi utilizzare la funzione array_reverse().
    Quello che non mi torna però è l'utilità della query che effettui. In pratica ti restituisce gli id che utilizzi nella clausola where
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, usa sort al posto di ksort che ordina per valorei e non per chiavi dell'array se e' questo che ti serve.
    Tu modifichi l'ordine per chiavi con ksort ma probabilmente ti mantiene la stessa chiave e nel ciclo for ovviamente avendo come indice da 1 in su va cmq a prendere quella chiave ricercandola nell array.

    Se vuoi cmq al posto di fare tutto il ciclo per comporre la query basterebbe usare IN() in sql tipo:

    ...where nomecampo IN('1','2','3')... cerca tutti i record dove nomecampo contiene uno dei valori fra parentesi

  4. #4
    si la query era soltanto un esempio da portare qui sul forum.

    ma l'array reverse non fa la stessa identica cosa ?

  5. #5
    codice:
    $pieces = explode("|", $last_v);
    array_reverse($pieces);
    print_r($pieces);
    mi stampa l'array nell'ordine originale

  6. #6
    Originariamente inviato da tizyjayd
    codice:
    $pieces = explode("|", $last_v);
    array_reverse($pieces);
    print_r($pieces);
    mi stampa l'array nell'ordine originale
    array_reverse( ):
    Takes an input array and returns a new array with the order of the elements reversed.
    quindi:
    Codice PHP:
    $pieces explode("|"$last_v);
    $pieces_reverse array_reverse($pieces);
    print_r($pieces_reverse); 

  7. #7
    Originariamente inviato da tizyjayd
    codice:
    $pieces = explode("|", $last_v);
    array_reverse($pieces);
    print_r($pieces);
    mi stampa l'array nell'ordine originale
    Però almeno leggeteli i manuali!

    Codice PHP:
    $pieces explode("|"$last_v);
    $result array_reverse($pieces);
    print_r($result); 
    Da manuale:

    codice:
    array_reverse — Return an array with elements in reverse order
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.