Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027

    [array] controllare campo

    buonasera o buongiorno a tutti

    non riesco ad effettuare un controllo all'interno di un array.
    l'array viene creato da una query

    codice:
      $check_user_rate = $db->prepare("SELECT idimmagine FROM votazioni WHERE idutente = :idutente");  $check_user_rate->execute(array(':idutente'=>$_SESSION['id']));
      $res_user_rate=$check_user_rate->fetchAll();
    l'array che viene creato è un'array di questo tipo:

    Array ( [0] => Array ( [idimmagine] => 27 [0] => 27 ) [1] => Array ( [idimmagine] => 24 [0] => 24 ) [2] => Array ( [idimmagine] => 24 [0] => 24 ) )

    adesso io avrei la necessita di vedere se un determinato valore per esempio il 27 (che è l'idimmagine) è contenuto all'interno di questo array... il valore che devo verificare però si trova a sua volta all'interno di un altro array che viene letto da un foreach di conseguenza la sitazione è questa

    codice:
    foreach($res_ultimi as $tattoo){
                  if($_SESSION['id']!=$tattoo['idutente']){
                    echo "<input id=".$tattoo['nomeimmagine']." type=hidden class=rating value=".$tattoo['media']." />";
                  }
                  else{
                    echo "<input type=hidden class=rating readonly=readonly value=".$tattoo['media']." />";
                  }
              }


    perciò cosa ho fatto? ho aggiunto all'if la condiione

    codice:
    !in_array($tattoo['nomeimmagine'],$res_user_rate)
    perchè appunto io voglio verificare che l'id immagine (ovvero il $tattoo['nomeimmagine']) non sia presente all'interno dell'array $res_user_rate

    in sostanza come ho fatto non funziona, o meglio l'if non funziona così come l'ho fatto. qualcuno saprebbe dirmi dove sbaglio?


  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    $res_user_rate è un array composto da array. In_array accetta soltanto un array composto da valori.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    quindi come potrei fare?

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo.

    Codice PHP:
    <?php    
    $myArray 
    = Array(=> Array('idimmagine' => 27,0=> 27 ),=> Array('idimmagine' => 24,=> 24 ),=> Array('idimmagine' => 20=> 20 ) );

    function 
    my_in_array($toFind,$array) {
        foreach(
    $array as $key => $subArray) {
            if (
    in_array($toFind,$subArray)) return true;
        }
        return 
    false;
    }

    If (
    my_in_array(54,$myArray)) {
        echo 
    "trovato";
    } else {
        echo 
    "non trovato";
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    e $toFind , $subArray e $key da dove li tiri fuori? o è proprio la sintassi della function ad essere così?

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Codice PHP:
    !my_in_array($tattoo['nomeimmagine'],$res_user_rate
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    residenza
    bergamo
    Messaggi
    1,027
    allora io ho fatto così ma non funziona

    codice:
      $check_user_rate = $db->prepare("SELECT idimmagine FROM votazioni WHERE idutente = :idutente");  $check_user_rate->execute(array(':idutente'=>$_SESSION['id']));
      $res_user_rate=$check_user_rate->fetchAll();
      function my_in_array($toFind,$array) {
        foreach($array as $key => $subArray) {
          if (in_array($toFind,$subArray)) return true;
        }
        return false;
      }
    
              foreach($res_ultimi as $tattoo){
                  if($_SESSION['id']==$tattoo['idutente'] && !my_in_array($tattoo['nomeimmagine'],$res_user_rate)){
                    echo "<input id=".$tattoo['nomeimmagine']." type=hidden class=rating value=".$tattoo['media']." />";
                  }
                  else{
                    echo "<input type=hidden class=rating readonly=readonly value=".$tattoo['media']." />";
                  }

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    No pain. No gain.

    La funzione funziona.

    Ti ho mostrato come fare per cercare un valore in un array di array. Ma non sapendo come sono strutturati i tuoi dati e quali valori hanno, difficile fare di meglio.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.