Visualizzazione risultati 1 fino 9 di 9

Discussione: funzione per indicare il array

  1. #1
    Guest

    Predefinito funzione per indicare il array

    Salve.
    non sapevo come mettere il titolo è lo messo così, se qualcuno sà come metterlo meglio, cambi pure.

    Parto dandovi il codice php:
    Codice PHP:
    <?php
    $titleprimo
    = array("pane","birra","pera");
    $titlesecondo = array("236","ciao","45");

    $title = array_merge($titleprimo,$titlesecondo);

    $title_lowercase = array_map('strtolower', $title);
    array_multisort($title_lowercase, SORT_ASC, SORT_STRING, $title);


    for (
    $i=0; $i<count($title); $i++)
    echo
    "<a href = film/all/{$title[$i]}/{$title[$i]}.php>" . str_replace("-"," ",$title[$i]) . "</a><br>";

    ?>
    Risultato: http://bollywood2.altervista.org/prova.php

    Codice PHP:
    Qui unisco i 2 array in uno unico:
    ...
    $title = array_merge($titleprimo,$titlesecondo);
    ...
    Questa parte di codice serve a mettere in ordine alfabetico gli array uniti:
    ...
    $title_lowercase = array_map('strtolower', $title);
    array_multisort($title_lowercase, SORT_ASC, SORT_STRING, $title);
    ...
    quello che voglio fare è, di poter cambiare il link: film/??????/{$title[$i]}/{$title[$i]}.php

    Cioè sè il contenuto di {$title[$i]} proviene dall'array "$titleprimo" al posto dei punti di domanda stampo "x", mentre sè il contenuto di {$title[$i]} proviene dall'array "$titlesecondo" stampo "y", il problema principale e che non sò se esiste una funzione capace di capire se un contenuto di un array proviene da "$title" o "$titlesecondo", qualcuno sà come fare?, bisogna creare una funzione nuova per questo?, perchè non saprei da dove comincire.
    Se unendo gli array non e più possibile identificare la loro provenienza sapresti/e indicarmi una strada alternativa??
    L'importante che alla fine io ottenda una serie di link in ordine alfabetico è che al posto dei punti di domanda ci sia "x" o "y" a seconda della provenienza dell'array.
    Qui c'è una pagina html con il risultato finale che vorrei ottenere:
    http://bollywood2.altervista.org/finale.html


    Spero di essere stato abbastanza chiaro.
    Grazie in anticipo.

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Se i valore presenti in $titoloprimo non sono presenti in $tiotolosecondo, potresti verificare con la funziona in_array se un valore è presente nel primo o nel secondo array.

    Per esempio:
    Codice PHP:
    <?php
    $titleprimo
    = array("pane","birra","pera");
    $titlesecondo = array("236","ciao","45");

    $title = array_merge($titleprimo,$titlesecondo);

    /* operazioni inutili dato che non utilizzi in nessun caso $title_lowercase... */
    $title_lowercase = array_map('strtolower', $title);
    array_multisort($title_lowercase, SORT_ASC, SORT_STRING, $title);
    /* fine operazioni inutili */

    foreach($title as $t)
    echo
    "<a href = film/" . (in_array($t, $titoloprimo) ? 'x' : 'y') . "/$t/$t.php>" . str_replace("-"," ",$t) . "</a><br>";
    ?>
    Ultima modifica di javascripter : 27-04-2011 alle ore 14.58.14

  3. #3
    Guest

    Predefinito

    Inanzittutto grazie per aver risposto.
    così facendo tutti i link hanno y
    http://bollywood2.altervista.org/prova2.php

    ---------

    Scusa o trovato l'errore
    Codice PHP:
    ...
    foreach(
    $title as $t)
    echo
    "<a href = film/" . (in_array($t, $titleprimo) ? 'x' : 'y') . "/$t/$t.php>" . str_replace("-"," ",$t) . "</a><br>";
    ...
    al posto di "titoloprimo" va "titleprimo", piccolo errore di battitura, comunque grazie 1000 senza di te non c'è l'avrei mai fatta :):):)

    EDIT:
    Riapro la discussione.
    Come posso fare se c'è piu di un array?
    $titleprimo = array("pane","birra","pera");
    $titlesecondo = array("236","ciao","45");
    $titleterzo= array("236","ciao","45");

    Grazie in anticipo.
    Ultima modifica di alemoppo : 07-05-2011 alle ore 22.10.08 Motivo: usa il tasto Edita

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    array_merge() può avere n parametri, dove n ∈ N+\{0}

    Ciao!
    Ultima modifica di alemoppo : 08-05-2011 alle ore 01.15.05

  5. #5
    Guest

    Predefinito

    Forse non mi sono spiegato bene io.
    Codice PHP:
    $titleprimo = array("pane","birra","pera");
    $titlesecondo = array("236","ciao","45");
    $titleterzo = array("236","ciao","45");

    $title = array_merge($titleprimo,$titlesecondo,$titleterzo);


    $title_lowercase = array_map('strtolower', $title);
    array_multisort($title_lowercase, SORT_ASC, SORT_STRING, $title);


    foreach(
    $title as $t)
    echo
    "<a href = film/" . (in_array($t, $titleprimo, $titlesecondo,) ? 'x' : 'y' : 'z') . "/$t/$t.php>" . str_replace("-"," ",$t) . "</a><br>";
    ?>
    come vedere quello che voglio fare e che si stampi "z" nel caso l'array provenga da "$titleterzo", come mi aspettavo non ha funzionato, sapete come fare?

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Beh, innanzitutto l'operatore ternario:

    Codice PHP:
    (in_array($t, $titleprimo, $titlesecondo,) ? 'x' : 'y' : 'z')
    Non può funzionare....


    Spero di aver capito cosa vuoi fare... fai una cosa del genere:

    Codice PHP:
    foreach($title as $t)
    if(
    in_array($t, $titleprimo))
    echo
    'x';
    else if(
    in_array($t, $titlesecondo))
    echo
    'y';
    else if(
    in_array(in_array($t, $titleterzo))
    echo
    'z';
    else echo
    'Non è presente in alcun array';
    1-in_array() non riceve in ingresso 3 array.
    2-l'operatore ternario è come un if-else: non hanno senso 2 ":"

    Codice:
    if(condizione) esegui se è vero else esegui se è falso
    ovvero:
    Codice:
    (condizione)? esegui se è vero : esegui se è falso
    Ciao!
    Ultima modifica di alemoppo : 09-05-2011 alle ore 23.49.21

  7. #7
    Guest

    Predefinito

    Grazie per aver risposto.
    Domanda!
    potrei continuare all'infinito con else if, cioè:
    Codice PHP:
    foreach($title as $t)
    if(
    in_array($t, $titleprimo))
    echo
    'x';
    else if(
    in_array($t, $titlesecondo))
    echo
    'y';
    else if(
    in_array(in_array($t, $titleterzo))
    echo
    'z';
    else if(
    in_array(in_array($t, $title4))
    echo
    'e';
    else if(
    in_array(in_array($t, $title5))
    echo
    'r';
    else if(
    in_array(in_array($t, $title6))
    echo
    't';
    else if(
    in_array(in_array($t, $title7))
    echo
    'y';
    else echo
    'Non è presente in alcun array';
    oppure c'è il limite di 3 else if consecutivi?

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,685

    Predefinito

    Non c'é alcun limite!

    Ciao!

  9. #9
    Guest

    Predefinito

    Ok grazie.
    c'è un modo per filtrare i array. ad esempio prendere in considerazione solo quelli che iniziano per a,b,c ... ecc o numeri?

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •