Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema cancellazione elemento array

    Ciao a tutti,
    E' da un po' che programmo in php, e devo dire che fino ad ora mai avuto grossi problemi, però ora mi trovo di fronte a questo dilemma:
    Vorrei far vedere a random (nella variabile $a con valori da 0 a 51) 8 elementi diversi tra loro dell'array $carte, per fare questo dovrei cancellare ad ogni ciclo l'elemento dell'array stampato, ho provato a farlo mediante la funzione iniziale che ho trovato in rete che ho denominato array_cancella che non mi ha portato a nessun risultato, ho provato anche alla fine del ciclo for ad associare a NULL l'elemento dell'array, però non funziona nulla dato che ad ogni volta che stampo i valori a volte me li fa visualizzare doppi!
    Il codice è questo:

    codice:
    function array_cancella($array, $item) {
    	if (isset($array[$item])){
    	unset($array[$item]);
    	}
    return array_merge($array);
    }
    	
    $n = 0;
    for ($n=0; $n<9; $n++){	
    $carte = array("AC", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "DC", "JC", "QC", "KC",
    			   "AQ", "2Q", "3Q", "4Q", "5Q", "6Q", "7Q", "8Q", "9Q", "DQ", "JQ", "QQ", "KQ",
    			   "AF", "2F", "3F", "4F", "5F", "6F", "7F", "8F", "9F", "DF", "JF", "QF", "KF",
    			   "AP", "2P", "3P", "4P", "5P", "6P", "7P", "8P", "9P", "DP", "JP", "QP", "KP");
    $a = rand(0, 51);
    $carta[$n] = $carte[$a];
    	if ($n == 0){
    	print ("1 - $carta[$n] ");
    	} else {
    		if ($n == 1){	
    		print ("$carta[$n] 
    ");
    		} else {
    			if ($n == 2){
    			print ("2 - $carta[$n] ");
    			} else {
    				if ($n == 3){	
    				print ("$carta[$n] 
    ");
    				} else {	
    					print ("$carta[$n] ");
    				}
    			}
    		}
    	}
    $carte = array_cancella($carte, $a);
    $carte[$a] = NULL;
    }
    Potreste darmi un consiglio? Grazie in anticipo.

  2. #2
    Ho modificato il codice togliendo le parti superflue in questo modo può essere analizzato meglio:

    Codice PHP:
    function array_cancella($array$item) {
        if (isset(
    $array[$item])){
        unset(
    $array[$item]);
        }
    return 
    array_merge($array);
    }
        
    $n 0;
    for (
    $n=0$n<9$n++){    
    $carte = array("AC""2C""3C""4C""5C""6C""7C""8C""9C""DC""JC""QC""KC",
                   
    "AQ""2Q""3Q""4Q""5Q""6Q""7Q""8Q""9Q""DQ""JQ""QQ""KQ",
                   
    "AF""2F""3F""4F""5F""6F""7F""8F""9F""DF""JF""QF""KF",
                   
    "AP""2P""3P""4P""5P""6P""7P""8P""9P""DP""JP""QP""KP");
    $a rand(051);
    print (
    "$carte[$a] ");
    $carte array_cancella($carte$a);
    $carte[$a] = NULL;


  3. #3
    Codice PHP:
    for ( $x 0$x 9$x++ ) {
        
    $rand rand(051 $x);
        list(
    $pick) = array_splice($carte$rand1);
        echo 
    $pick"\n";

    NOTA: L'array $carte devi definirlo una volta sola e fuori dal ciclo, altrimenti viene inizializzato ogni volta.

  4. #4
    Grazie mille funziona! E' proprio quello che volevo ottenere.

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.