Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di miksco
    Registrato dal
    Oct 2012
    Messaggi
    21

    Cercare valore parziale in array

    Buongiorno,
    ho un array di questo tipo:

    Codice PHP:
    Array
    (
        [
    0] => Valore 1
        
    [1] => ValoreValoreifrato
        
    [2] => ProprietaNDI5CDE145
        
    [3] => DateSun01 Sep 2013 10:54:50 GMT
        
    [4] => Valore Molto Lungo: New Long "very strong" val
        
    [5] => MIME/TYPEtext/html

    Ecco se io adesso volessi cercare se tra questi valori è presente "Valore Molto Lungo" (che per intenderci qui esiste e si trova alla chiave 4) quale funzione devo usare?

    Ho provato vari metodi, l'ultimo è questo:

    Codice PHP:
    var_dump(array_key_exists("Valore Molto Lungo",array_flip($headers))); 
    Purtroppo però l'esito è sempre negativo.

    Ricapitolando a me interessa sapere se "Valore Molto Lungo" è presente... la parte che segue («: New Long "very strong" val») non è importante ed è variabile.

    Suggerimenti/aiuti?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    Codice PHP:
    $v = array(
        
    'num' => 1,
        
    'valore' => 'Valoreifrato',
        
    'proprieta' => 'NDI5CDE145',
        
    'date' => 'Sun, 01 Sep 2013 10:54:50 GMT',
        
    'valoreMoltoLungo' => 'New Long "very strong" val',
        
    'mimeType' => 'text/html',

    se vuoi sapere se 'valoreMoltoLungo' ha un valore diverso da NULL e '', puoi usare:
    Codice PHP:
    echo (!empty($v['valoreMoltoLungo']) ? 'esiste il valore' 'non esiste'
    se ti serve sapere solo se esiste la chiave 'valoreMoltoLungo' puoi usare:
    Codice PHP:
    echo (array_key_exists('valoreMoltoLungo'$v)) ? 'esiste la chiave' 'non esiste'
    se non vuoi/puoi modificare l'array, puoi provare con espressioni regolari
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  3. #3
    Utente di HTML.it L'avatar di miksco
    Registrato dal
    Oct 2012
    Messaggi
    21
    L'array non lo posso modificare. Quello che ti ho postato è il risultato di un print_r($array).

    Con le regex non vado tanto d'accordo, non è che mi potresti dare una mano per cortesia?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    come fai ad ottenere l'array? è sempre uguale? Valore Molto Lungo: New Long "very strong" val è sempre in [4]? la posizione 4 può avere un altro valore al posto di Valore Molto Lungo:? può essere anche NULL? Valore Molto Lungo si può trovare in un'altra posizione? ci possono essere due Valore Molto Lungo nello stesso array?

    nel casso Valore Molto Lungo si trovi solo nella posizione 4 puoi fare:
    Codice PHP:
    $vml explode(":",$array[4]);
    echo (
    strcmp($vml[0],'Valore Molto Lungo') == 0) ? 'Esiste Valore Molto Lungo' 'No'
    oppure, se non sai in che posizione si può trovare:
    Codice PHP:
    foreach($array as $k=>$v){
        
    $vml explode(':',$v);
        echo (
    strcmp($vml[0],'Valore Molto Lungo') == 0) ? 'Esiste Valore Molto Lungo' 'No'

    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Se vuoi sapere se è presente da qualche parte nella stringa, usa la strpos()

    Codice PHP:
    foreach($array as $key => $value){
        if(
    strpos($value'Valore Molto Lungo') !== false)
            echo 
    "Trovato in posizione $key";


  6. #6
    Utente di HTML.it L'avatar di miksco
    Registrato dal
    Oct 2012
    Messaggi
    21
    Buongiorno e grazie a tutti per le vostre risposte.

    Ho utilizzato questo codice dell'utente boots aggiungendo un break dove necessario:

    Codice PHP:
    foreach($headers as $key => $value){ 
        if(
    strpos($value'WWW-Authenticate') !== false) {
            echo 
    "Trovato in posizione $key";
            break;
    }        

    Comunque per rispondere alle vostre domande:

    1. Il valore che cerco non è sempre nella stessa posizione.
    2. L'array è variabile, mi viene generato da dei ping e delle richieste post/get che riceve il mio script.
    3. L'array non è modificabile.
    4. Il valore cercato non può essere NULL.
    5. Non possono esserci due valori o, nel raro caso di valori doppi, l'ultimo prevale.

    Vi ringrazio infinitamente per il vostro aiuto

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.