• Moderatore

    Nuovo Array da Array $Chiave,$Valore

    Ciao a tutti
    Ho costruito un array del tipo coppie chiavi, valore

    Però non riesco a usarlo tipo nei cicli for o if
    Esempio:
    while (list($chiave,$valore) = each($all)){
    for ($contatore=0; $contatore < 12; $contatore++) {
    $allnome=$chiave[$contatore];
    echo '<div><a href="'.$urlsito.''.$allnome.'"><img src="'.$urlsito.''.$allnome.'/0.jpg" alt=""></a>'.$allnome.'</div>';
    }
    }

    Questo non funziona.

    Quindi sarebbe più comodo Estrarre un nuovo arrai che contenga solo $chiave o $valore
    Come si fa???

    Grazie


  • Super User

    Sai che non ho capito nulla di quello che devi fare ???

    Magari è questo:

    foreach($all as $chiave => $valore)
    {
    echo '<div><a href="'.$urlsito.'/'.$valore.'"><img src="'.$urlsito.'/'.$valore.'/0.jpg" alt=""></a>'.$valore.'</div>';
    }

    Ciao.


  • Moderatore

    Ciao grazie della risposta
    In pratica volevo visualizzare solo i primi 12
    echo '<div><a href="'.$urlsito.'/'.$valore.'"><img src="'.$urlsito.'/'.$valore.'/0.jpg" alt=""></a>'.$valore.'</div>';

    E poi dopo mi servirebbe che vengano estratti casualmente.

    Tu in pratica hai sostituito solo il while con il foreach, ma il while funzionava già senza il ciclo for

    Grazie


  • Super User

    Ma i primi 12 di cosa ????


  • Moderatore

    Di $all in modo che visualizzi 12 di questi div:
    echo '<div><a href="'.$urlsito.'/'.$valore.'"><img src="'.$urlsito.'/'.$valore.'/0.jpg" alt=""></a>'.$valore.'</div>';


  • Super User

    Allora devi usare le funzioni current e next degli array di php:

    In questo link c'e' un esempio che potrebbe aiutarti.

    php. net/manual/en/function.reset.php

    M.


  • Moderatore

    Ok grazie
    ma mi sembra un po' laborioso fare next e current x ognuno, non si può riassumere con un ciclo?

    L' ideale se sai come si fa sarebbe quello di creare 2 array dal primo.
    Cioè io ho un array formato da $chiave,$valore .
    E' possibile da questo creare un array con solo gli elementi $chiave e uno con solo gli elementi $valore?

    Sarebbe l' ideale perchè semplificherebbe il tutto


  • Super User

    infatti devi mettere next dentro ad un ciclo

    reset array
    for (da 1 a 12)
    next array
    $a = current array
    faccio quello che devo fare su $a
    fine for

    così dovrebbe andare.


  • Moderatore

    ok, e la distinzione tra $chiave e $valore dove la metto?


  • Moderatore

    Ok ho provato in 2 modi, funzionano entrambi ma nel modo sbagliato:

    foreach($all as $chiave => $valore) {
    reset ($all);
    for ($mul = 1; $mul <= 12; ++$mul){
    next ($all);
    $a = current ($all);
    echo '<div><a href="'.$urlsito.''.$chiave.'"><img src="'.$urlsito.''.$chiave.'/0.jpg" alt=""></a>'.$chiave.'</div>';
    }
    }

    Cosi mi ripete ogni div 12 volte prima di passare a quello dopo.

    reset ($all);
    for ($mul = 1; $mul <= 12; ++$mul){
    next ($all);
    $a = current ($all);
    foreach($all as $chiave => $valore) {
    echo '<div><a href="'.$urlsito.''.$chiave.'"><img src="'.$urlsito.''.$chiave.'/0.jpg" alt=""></a>'.$chiave.'</div>';
    }
    }

    Così invece mi ripete l' intero elenco di div 12 volte.

    Io invece vorrei che mi desse solo i primi 12 dell' elenco.

    Dai che ci siamo quasi...


  • Moderatore

    Ok ho trovato la risposta giusta andando un po' a tentativi

    $chiave2 = array ($chiave[0]);
    while (list($chiave,$valore) = each($all)){
    array_push ($chiave2,"$chiave");
    }

    Così creo il nuovo array con dentro solo le chiavi

    Poi semplicemente

    for ($mul = 1; $mul <= 12; ++$mul){
    echo '<div><a href="'.$urlsito.''.$chiave2[$mul].'"><img src="'.$urlsito.''.$chiave2[$mul].'/0.jpg" alt=""></a>'.$chiave2[$mul].'</div>';
    }

    Grazie lo stesso dell' aiuto