Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502

    Cercare e rilevare la posizione in un array

    Salve ragazzi, premetto che il titolo è un po' vago, so che esistono funzioni che fanno ciò che ho scritto, ma non è proprio quello ciò che voglio fare ...scusate

    Ho un array di array:
    Codice PHP:
    $account_temp = array('id' => array(),
                
    'user' => array(),
                
    'pass' => array(),
                
    'domain' => array(),
                
    'id_host' => array(),
                ); 
    Che viene riempito più volte in modo automatico. (Esempio).
    Codice PHP:
    $account_temp['id'][] = $re_host->id;
    $account_temp['user'][] = $re_host->user;
    $account_temp['pass'][] = $re_host->pass;
    $account_temp['domain'][] = $row2->domain;
    $account_temp['id_host'][] = $row2->id
    Ad un certo punto eseguo un foreach per aggiungere dei dati in una tabella. In questo foreach ho anche l'id_host (varia ogni volta che fa il ciclo, no?)

    Cosa voglio fare io: trovare quel determinato id_host a che array corrisponde, ovvero:
    Codice PHP:
    $id_host $request_link['id_host'][$key]; // Niente di che, sto solo prendendo l'id_host

    in_array($id_host$account_temp['id_host']) 
    Presupponiamo che l'intero array abbia 3 row, ovvero tutti i dati per l'user pippo, pluto e topolino. Ciò che voglio fare io è cercare quale di queste row (perchè saranno tante) ha l'id_host uguale a quello del ciclo e prelevare i dati relativi a quella row.

    Non so se sono stato chiaro... scusate

    Esempio:
    Pippo ha id_host 23 e id 2.
    tramite ciò che vi ho spiegato vorrei risalire al suo id (sempre salvato nell'array) che è 2... Come?
    Personal Home Page

  2. #2
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Ma non ti converrebbe invertire l'ordine delle chiavi nella costruzione dell'array?
    In questo modo:

    Codice PHP:
    $array = array(
      array(
         
    'id' => ...
         
    'user' => ...
    ...
      )

    a questo punto ti basterebbe ciclare l'array e fermarti appena trovi quello che cerchi

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    concordo con l'idea di ristrutturare l'array come già suggerito, cmq qualcosa come:

    Codice PHP:
    // supponendo che $id_host sia univoco e già inizializzato
    $pos array_search($id_host$array['id_host']);

    $id $array['id'][$pos]; // recupera l'id corrispondente 
    ...solo se $id_host è univoco, altrimenti devi fare un ciclo registrando tutte le "$pos" e poi recuperare i corrispondenti dati

  4. #4
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Vi ringrazio innanzitutto.

    Dovrei andare a fare così allora:

    Codice PHP:
    $account_temp = array( 
                    array(
    'id''user''pass''domain''id_host')
               ); 
    e l'aggiunta

    Codice PHP:
    $account_temp[]['id'] = $re_host->id;
    $account_temp[]['user'] = $re_host->user;
    $account_temp[]['pass'] = $re_host->pass;
    $account_temp[]['domain'] = $row2->domain;
    $account_temp[]['id_host'] = $row2->id
    Ma non credo vada
    Personal Home Page

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se vuoi ristrutturare l'array avresti:

    Codice PHP:
    $account_temp = array( array('id''user''pass''domain''id_host') );
    $account_temp[] = array(
       
    'id' => $re_host->id,
       
    'user' => $re_host->user,
       
    'pass' => $re_host->pass,
       
    'domain' => $row2->domain,
       
    'id_host' => $row2->id
    ); 
    Per trovare il valore vari modi, ma uno può essere:
    Codice PHP:
    // $id_host contiene quello da cercare...
    foreach ($account_temp as $i => $account) {
      if (
    $account['id_host'] == $id_host$j $i// oppure $j[] = $i se ci possono essere più account con lo stesso id_host
    };
    // ...$j contiene l'indice trovato (o gli indici, come array, nella variante sopraindicata) 
    Se $j NON è un array puoi aggiungere un break o trasformare il ciclo con un while per fermarti quando lo trovi senza proseguire

  6. #6
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Sei stato esaurientissimo ! veramente ! vi ringrazio tutti
    Personal Home Page

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.