Visualizzazione dei risultati da 1 a 9 su 9

Discussione: stringhe in php

  1. #1
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144

    modifica stringhe in php

    Salve ho un problema che non riesco a risolvere , sto creando uno script per lotteria con php e mysql.

    ho fatto un ciclo for che analizza i dati di una tabella in mysql e mi scrive in rosso i numeri occupati e i nero quelli non occupati , il problema deriva dal fatto che se voglio scriverci anche il nickname del proprietario di quel numero non so come far si che siano 2 dati differenti

    come esempio
    $stringa="01,03,05,57";
    $separatore=",";
    $suddivisa=explode($separatore, $stringa);
    la stringa in questione dovrà contenere anche il nickname del proprietario affianco al numero quindi tipo cosi

    $stringa="01(pippo),03(pinco),05(pallino),57(prova )";
    con quale tipo di explode posso togliere anche in 2 passaggi il nickname compreso di parentesi

    e quindi avere come risultato
    $stringa[1] è 01
    $stringa[2] è 03

    e in un secondo momento poter associare il 01 a pippo ?


    grazie !
    Silence please work in progress

  2. #2
    Puoi fare cosi' per trasformare quella stringa in un array in cui associ numeri a nomi:

    codice:
    $stringa = "01(pippo),03(pinco),05(pallino),57(prova)";
    
    preg_match_all('/(\d\d)\((.*?)\)/', $stringa, $match);
    
    $output = array_combine($match[1], $match[2]);
    
    print_r($output);
    ma come salvi i dati nel database?

  3. #3
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144
    Originariamente inviato da k.b
    Puoi fare cosi' per trasformare quella stringa in un array in cui associ numeri a nomi:

    codice:
    $stringa = "01(pippo),03(pinco),05(pallino),57(prova)";
    
    preg_match_all('/(\d\d)\((.*?)\)/', $stringa, $match);
    
    $output = array_combine($match[1], $match[2]);
    
    print_r($output);
    ma come salvi i dati nel database?

    Grazie mille , in questo caso scrivendo
    codice:
    echo "$output[01]";
    mi da risultato pippo , se invece volessi come risultato dell'array il numero e non il nome ?
    quindi avere in un passaggio che il programma mi ignori quello che c'è scritto nelle parentesi
    e quindi avere come stringa modificata
    $stringa[1] è 01
    $stringa[2] è 03

    adattandolo meglio al ciclo for per individuare se un numero è stato preso

    Codice PHP:
    for ($mul 1$mul <= 30; ++$mul) { 
    $numero in_array($mul$suddivisa); 
    if (
    $numero!==false) {
     echo 
    " [b] <font color=\"#FF0000\">$mul</font>[/b]"
    } else { 
    echo 
    $mul"
    } } 
    Silence please work in progress

  4. #4
    Puoi usare array_keys($output) per ottenere un array con le sole key (cioe' i numeri) e fare il controllo su quello, esempio:

    Codice PHP:
    if ( in_array($numeroarray_keys($output)) ) {
        
    // ....

    cosi' facendo puoi avere l'elenco dei numeri e - quando ti serve - anche il relativo nome.

  5. #5
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144
    perfetto ho quasi risolto ma c'è un problema per i numeri sotto al 10

    scrivendo
    Codice PHP:
    for ($numero 1$numero <= 30; ++$numero) { 
    if ( 
    in_array($numeroarray_keys($output)) ) { 
    echo 
    " [b] <font color=\"#FF0000\">$numero</font>[/b] come proprietario $output[$numero]"; } 
    else { echo 
    $numero"
    } } 
    per i numeri sotto al 10 mi va a cercare 1 e non 01 e quindi mi da come risultato

    Notice: Undefined offset: 1 in D:\...\test2.php on line 20

    mentre se vado a scrivere direttamente 1 nella stringa principale , non mi compare piu nell'array , come mai?


    l'unica cosa che mi viene in mente adesso è

    Codice PHP:
    if ($numero <= 10) { $numero "0+$numero"; } 
    ma si blocca e non funge , e non è che sia granchè penso
    Silence please work in progress

  6. #6
    Nel codice sopra sostituisci la riga di creazione dell'array con questa:

    codice:
    $output = array_combine((int)$match[1], $match[2]);

  7. #7
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144
    da quest'errore


    Codice PHP:
    Warningarray_keys() [function.array-keys]: The first argument should be an array in D:\...\test2.php on line 21

    Warning
    in_array() [function.in-array]: Wrong datatype for second argument in D:\...\test2.php on line 21 
    il codice completo è :

    Codice PHP:
    $stringa "01(pippo),03(pinco),11(pallino),57(prova)";

    preg_match_all('/(\d\d)\((.*?)\)/'$stringa$match);

    $output array_combine($match[1], $match[2]);

    echo 
    "
    "
    ;
    print_r($output);
    echo 
    "
    il proprietario del numero 1 è 
    $output[01]

    "
    ;

    for (
    $numero 01$numero <= 10; ++$numero) { 
    if ( 
    in_array($numeroarray_keys($output)) ) { 
    echo 
    " [b] <font color=\"#FF0000\">$numero</font>[/b]($output[$numero])"
    } else { 
    echo 
    $numero"
    } } 
    se vuoi darmi un ultimo aiuto te ne sarei grato
    Silence please work in progress

  8. #8
    Scusa ho detto una stupidaggine, prova

    codice:
    $stringa = "01(pippo),03(pinco),11(pallino),57(prova)";
    
    preg_match_all('/(\d\d)\((.*?)\)/', $stringa, $match);
    
    $output = array_combine($match[1], $match[2]);
    
    echo "
    ";
    print_r($output);
    echo "
    il proprietario del numero 1 è $output[01]
    
    ";
    
    for ($numero = 1; $numero <= 10; $numero++) {
    	$indice = sprintf("%02d", $numero);
    	if ( in_array($indice, array_keys($output)) ) {
    		echo "  <font color=\"#FF0000\">$numero</font>({$output[$indice]})";
    	} else {
    		echo " $numero";
    	}
    }

  9. #9
    Utente di HTML.it L'avatar di reiziel
    Registrato dal
    Jun 2007
    Messaggi
    144
    perfetto funziona.

    sei stato gentilissimo , grazie ancora se hai bisogno di qualsiasi cosa mandami un messaggio
    Silence please work in progress

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.