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

    Costruire (quasi) matematicamente una array

    Salve a tutti.
    Codice PHP:
    $myarray = array(1213 ,14173174,175); 
    Questo script va benissimo per piccole array, ma per molti dati risulta palloso da compilare, con il rischio, tra l'altro, di fare errori di battitura.

    Visto che le sequenze che devo inserire sono spesso continue e questa continuità è molto lunga, mi servirebbe che con qualche linea di codice questa array si riempia da sola.

    Detta in linguaggio umano, ecco quello che mi serve:

    a=12
    b=115
    c=120
    d=350
    ...
    ...
    se (a non è maggiore di b) ripeti (aggiungi a all'array, aumenta a di 1)
    altrimenti (facciamo la stessa cosa con c-d)
    se (c è uguale a d) fine


    Ringrazio in anticipo chi può tradure in PHP quanto ho scritto.

  2. #2

  3. #3
    Originariamente inviato da nicola75ss
    http://it2.php.net/manual/en/function.range.php
    Grazie, ma non ci capisco niente.

    Ho provato a mettere
    Codice PHP:
    foreach (range(50100) as $number) {
        echo 
    $number
    cambiando $number con $myarray ma non funziona.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Fammi capire bene. Attenendomi ai tuoi numeri

    a=12
    b=115
    c=120
    d=350

    l'array come dovrebbe diventare

    12,13,14,15,.....114,115,120,350

    E' corretto?

  5. #5
    No, scusami se non sono stato chiaro. Il risultato dovrebbe essere

    (Esempio staccato dai precedenti così non si fa confusione)

    9,10,11,12,13, ... .... ... 78, 79, 80, 87, 88, 89, 90, ... ... ... 175, 176, 177,

    Praticamente: sequenza dal 9 al 80, sequenza dall'87 al 177 ecc...

    Grazie.

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,509
    basta creare una funzioncina in cui passi come parametri inizio e fine del range

    in essa fa un ciclo for usando quei parametri

    usi la funzioni array_push per inserirli nel tuo array
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Codice PHP:
    $array = array();
    $iuno 9;
    $funo 80;
    $idue 87;
    $fdue 177;
    echo 
    '<pre>';
    $array range($iuno,$funo);
    print_r($array);
    $array array_merge($array,range($idue,$fdue));
    print_r($array); 

  8. #8
    Ok, prima di tutto grazie 1000 ad entrambi, ma devo arrendermi alla mia ignoranza in questo campo.
    Faccio un riepilogo inserendo questa volta anche le motivazioni e lo script da modificare per intero, così ci si capisce meglio.
    Sto usando Drupal e devo rendere visibile un blocco (un menu) solo nelle pagine che sono taggate con uno dei termini della array e del menu stesso. Quindi se il codice restituisce TRUE il blocco è visibile, altrimenti no. Sottolineo che lo script originale funziona perfettamente ed è questo:

    Codice PHP:
    <?php
      $myterms 
    = array(395985114); // list the ids of the terms you want
      // This will show on all nodes having this term
      
    if ((arg(0) == 'node') && is_numeric(arg(1))) {
        
    $terms taxonomy_node_get_terms(node_load(arg(1)));
        foreach(
    $terms as $term) {
          if (
    in_array($term->tid$myterms)) return TRUE;
        }
      }
      
    // This will show on the index page for that term
      
    if ((arg(0) == 'taxonomy') && (arg(1) == 'term') && (in_array(arg(2), $myterms))) {
        return 
    TRUE;
      }
      
    // Otherwise
      
    return FALSE;
    ?>
    Ho eliminato
    Codice PHP:
    $myterms = array(395985114); 
    che non serve più ed ho inserito lo script di Nicola:
    Codice PHP:
    <?php
      $myterms 
    = array();
    $iuno 50;
    $funo 55;
    $idue 78;
    $fdue 86;
    echo 
    '<pre>';
    $myterms range($iuno,$funo);
    print_r($myterms);
    $myterms array_merge($myterms,range($idue,$fdue));
    print_r($myterms);
      
    // This will show on all nodes having this term
      
    if ((arg(0) == 'node') && is_numeric(arg(1))) {
        
    $terms taxonomy_node_get_terms(node_load(arg(1)));
        foreach(
    $terms as $term) {
          if (
    in_array($term->tid$myterms)) return TRUE;
        }
      }
      
    // This will show on the index page for that term
      
    if ((arg(0) == 'taxonomy') && (arg(1) == 'term') && (in_array(arg(2), $myterms))) {
        return 
    TRUE;
      }
      
    // Otherwise
      
    return FALSE;
    ?>
    Il risultato è che il blocco è SEMPRE visibile, e non solo nel range indicato.
    Chi ne capisce di più forse può capire dove sta l'inghippo, io non ne sono in grado.

  9. #9
    Nessuna sa dirmi come mai il primo va e il secondo no? Per favore, sono finito in terza pagina prima di uppare

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 © 2024 vBulletin Solutions, Inc. All rights reserved.