Visualizzazione dei risultati da 1 a 7 su 7

Discussione: foreach array_reverse

  1. #1

    foreach array_reverse

    Ciao,
    ho un file txt su cui scrivo tanti link (separati da una |). E fin qui tutto ok.

    Dal file txt voglio estrarre gli ultimi dieci link inseriti. Questo, invece, non mi riesce.
    Riesco ad estrarne 10, ma non gli ultimi dieci, i primi dieci inseriti. Per cui funziona finché nel file txt ho 10 link, poi (anche inserendone altri) non li mostra più.

    Questo è il codice che uso per estrarre i link dal file txt.
    <?
    $reco=file("ul/bs/0708/link.txt"); // legge il file assegna tutte le righe ad un array $rec
    foreach ($reco as $line)
    {
    $datx=explode ("|",$line); //suddivide $line per tutti gli | e crea un array $datx con i dati
    }

    $datx2=array_reverse($datx);

    if (count($datx2)>10)
    {
    for ($a=count($datx2)-10; $a < count($datx2); $a++)
    echo $datx2[$a];
    }

    else if (count($datx2)>=1)
    {
    foreach ($datx2 as $bingo)
    {
    echo $bingo;
    }
    }

    ?>


    Come posso fare?

    Grazie
    Firma opzionale che voglio compaia in fondo ai miei messaggi.

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    <?
    $reco
    =file_get_contents("ul/bs/0708/link.txt"); // legge il file e assegna il contenuo alla variabile  $reco
    $links=explode("|",$reco);

    // estraggo gli ultimi 10
    for ($a=count($links)-10$a=count($links); $a++)
      {
      if (isset(
    $links[$a-1]))
      echo 
    trim($links[$a-1])."
    "
    ;
      }
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Ciao,
    grazie per la risposta (ho provato adesso perché sono stata via).
    Credo di essermi spiegata male.

    Nel file di testo link.txt (nel quale inserisco di man in mano, sempre nuovi link) ci sono (al momento) 11 link. Ovvero questo testo



    22-11-07 prova 1</p>|

    22-11-07 prova 2</p>|

    22-11-07 prova 3</p>|

    23-11-07 prova 4</p>|

    23-11-07 prova 5</p>|

    23-11-07 prova 6</p>|

    23-11-07 prova 7</p>|

    24-11-07 prova 8</p>|

    24-11-07 prova 9</p>|

    24-11-07 prova 10</p>|

    24-11-07 prova 11</p>|



    Dal file txt voglio estrarre gli ultimi dieci link inseriti.
    In pratica (al momento, con 11 link inseriti):


    24-11-07 prova 11</p>


    24-11-07 prova 10</p>


    24-11-07 prova 9</p>


    24-11-07 prova 8</p>


    23-11-07 prova 7</p>


    23-11-07 prova 6</p>


    23-11-07 prova 5</p>


    23-11-07 prova 4</p>


    22-11-07 prova 3</p>


    22-11-07 prova 2</p>


    Utilizzando il codice che segue, invece, mi vengono mostrati i primi dieci (nel mio esempio da prova 1 a prova 10):
    <?
    $reco=file("ul/bs/0708/link.txt"); // legge il file assegna tutte le righe ad un array $rec
    foreach ($reco as $line)
    {
    $datx=explode ("|",$line); //suddivide $line per tutti gli | e crea un array $datx con i dati
    }

    $datx2=array_reverse($datx);

    if (count($datx2)>10)
    {
    for ($a=count($datx2)-10; $a < count($datx2); $a++)
    echo $datx2[$a];
    }

    else if (count($datx2)>=1)
    {
    foreach ($datx2 as $bingo)
    {
    echo $bingo;
    }
    }

    ?>

    Con il codice postato da Dottwatson mi si incasina qualcosa... perché la pagina continua a lavorare e devo chiuderla manualmente...


    Firma opzionale che voglio compaia in fondo ai miei messaggi.

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    hai ragione va in loop... una mia svista

    Codice PHP:
    <?
    $reco
    =file_get_contents("ul/bs/0708/link.txt"); // legge il file e assegna il contenuo alla variabile  $reco
    $links=explode("|",$reco);

    // estraggo gli ultimi 10
    for ($a=count($links)-10$a <= count($links); $a++)
      {
      if (isset(
    $links[$a-1]))
      echo 
    trim($links[$a-1])."
    "
    ;
      }
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Grazie Dottwatson
    così mi mostra gli ultimi 10 link inseriti, e va bene.
    Vorrei però invertire l'ordine in cui mi appaiono.
    L'ultimo deve essere in alto (nell'esempio è "prova 11"), adesso invece mi vengono estratti così:



    22-11-07 prova 2</p>


    22-11-07 prova 3</p>


    23-11-07 prova 4</p>


    23-11-07 prova 5</p>


    23-11-07 prova 6</p>


    23-11-07 prova 7</p>


    24-11-07 prova 8</p>


    24-11-07 prova 9</p>


    24-11-07 prova 10</p>


    24-11-07 prova 11</p>

    Sto facendo delle prove con "array_reverse" ma forse sono proprio fuori strada...

    Firma opzionale che voglio compaia in fondo ai miei messaggi.

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    <?
    $reco
    =file_get_contents("ul/bs/0708/link.txt"); // legge il file e assegna il contenuo alla variabile  $reco
    $links=explode("|",$reco);

    // estraggo gli ultimi 10
    $result=array();
    for (
    $a=count($links)-10$a <= count($links); $a++)
      {
      if (isset(
    $links[$a-1]))
      
    $result[]= trim($links[$a-1])."
    "
    ;
      }
    $end_result=array_reverse($result);

    foreach (
    $end_result as $link_) echo $link_;
    ?>

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    Cavoli...
    ci ho provato per ore... A leggerlo è estremamente logico ma non ci sarei arrivata MAI...

    Grazie Dottwatson
    Firma opzionale che voglio compaia in fondo ai miei messaggi.

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.