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

    selezionare un indice di un'array multidimensionale senza ciclo..

    considerando un'array del genere..
    codice:
    $ar[1]['env']='valore1';
    $ar[1]['amb']='valore2';
    $ar[1]['data']='valore3';
    
    $ar[2]['env']='valore4';
    $ar[2]['amb']='valore5';
    $ar[2]['data']='valore6';
    
    ecc... ecc...
    se ora voglio selezionare l'indice in cui 'amb' = valore5,( quindi 2)
    come dovrei fare?

    c'è un modo per evitare di farlo con un ciclo?

  2. #2
    $chiave=array_search('valore-stringa',$array)

    ti restituisce false se non trova corrispondenze.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Pero' il tuo e' un array multidimensionale.... non so se funziona...

    e' da vedere...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    nelle note..
    Codice PHP:
    <?php
    function SearchBiDimArray(&$theArray$dimNo$searchValue$returnIndex true){
       if(
    is_array($theArray)){
           
    $keys array_keys($theArray[0]);
           
    $key $keys[$dimNo];
           
    $elcount count($theArray);

           for(
    $i=0$i $elcount$i++){
               if(
    $theArray[$i][$key] === $searchValue){
                   if (
    $returnIndex){
                       return 
    $i;
                   }
                   else{
                       return 
    $theArray[$i];
                   }
               }
           }

       }
       else{
           return 
    array_search($searchValue$theArray);
       }
    }

    $theArray = array();
    $theArray[0]['firstproperty'] = 'avalue1';
    $theArray[0]['secondproperty'] = 'anothervalue1';

    $theArray[1]['firstproperty'] = 'avalue2';
    $theArray[1]['secondproperty'] = 'anothervalue2';

    $theArray[2]['firstproperty'] = 'avalue3';
    $theArray[2]['secondproperty'] = 'anothervalue3';

    print 
    SearchBiDimArray($theArray1'anothervalue2'true);
    // result is 1

    print SearchBiDimArray($theArray1'anothervalue2'true);
    // result is
    //Array
    //(
    //    [firstproperty] => avalue2
    //    [secondproperty] => anothervalue2
    //)

    ?>

  5. #5
    Originariamente inviato da piero.mac
    $chiave=array_search('valore-stringa',$array)

    ti restituisce false se non trova corrispondenze.


    però non capisco la differenza con array_keys...
    tutti e 2 restituiscono la chiave dato un valore..

  6. #6
    cmq..
    facendo cosi
    Codice PHP:
    $ar[1]['env']='valore1';
    $ar[1]['amb']='valore2';
    $ar[1]['data']='valore3';

    $ar[2]['env']='valore4';
    $ar[2]['amb']='valore5';
    $ar[2]['data']='valore6';


    echo 
    array_keys($ar,'valore5'); 
    mi restituisce Array.. che significa?

  7. #7
    Originariamente inviato da xnavigator
    cmq..
    facendo cosi
    Codice PHP:
    $ar[1]['env']='valore1';
    $ar[1]['amb']='valore2';
    $ar[1]['data']='valore3';

    $ar[2]['env']='valore4';
    $ar[2]['amb']='valore5';
    $ar[2]['data']='valore6';


    echo 
    array_keys($ar,'valore5'); 
    mi restituisce Array.. che significa?
    Significa che sia array_keys che array_search non funzionano con array multidimensionali. Cercano solo al primo livello di chiave e non al secondo....

    La differenza e' che uno restituisce chiave e valore, l'altro solo la chiave di un dato valore.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    piero e se volessi selezionare la chiave di un valore avendo solo una parte di quel valore?

    un pò come le query LIKE '%valore%'


  9. #9
    altra domandina..

    e se invece volessi prendere il valore (che in questo caso è un int) più grande?

    es $ar[chiave1]=1
    $ar[chiave2]=2
    ecc

    come faccio a sapre qual'è "l'ultimo valore"?

  10. #10
    Originariamente inviato da xnavigator
    piero e se volessi selezionare la chiave di un valore avendo solo una parte di quel valore?

    un pò come le query LIKE '%valore%'

    Non credo si possano usare caratteri jolly ...
    Originariamente inviato da xnavigator
    altra domandina..

    e se invece volessi prendere il valore (che in questo caso è un int) più grande?

    es $ar[chiave1]=1
    $ar[chiave2]=2
    ecc

    come faccio a sapre qual'è "l'ultimo valore"?
    puoi ordinare l'array ed estrarre un dato. prova con arsort o rsort.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.