estrarre solo un tot di elementi da...array

nim

Utente Attivo
11 Ott 2011
96
0
0
salve a tutti...dopo mesi ritorno con l'ennesimo problema.
mi spiego un attimo...con facebook connect ho realizzato lo script seguente che mi permette di estrarre tutte le immagini profilo dei miei amici di facebook e me le fa apparire una sotto l'altra
lo script è questo:
PHP:
<?php
    $user = $facebook->getUser();


    if ($user) {
        $user_profile = $facebook->api('/me');
        $friends = $facebook->api('/me/friends');

        echo '<ul>';
        foreach ($friends["data"] as $value) {
            echo '<li>';
            echo '<div class="pic">';
            echo '<a href="http://www.facebook.com/' . $value["id"] . '"><img src="https://graph.facebook.com/' . $value["id"] . '/picture"/></a>';
            echo '</div>';
            echo '</li>';
        }
        echo '</ul>';
    }
?>
volevo invece fare in modo di estrarre non tutte le immagini profilo dei miei amici ma soltanto un numero scelto da me per esempio 15.
sono al corrente della funzione "array_rand" ma non so come applicarla in questo caso perchè non c'è un vero e proprio array...
qualche idea?
grazie in anticipo.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,

potresti bloccare l'esecuzione del ciclo incrementando una variabile

PHP:
$i = 1;
foreach ($array as $value) {

    // ........

    $i++;
    if ($i == 15) {
        exit();
    }
}
non ricordo mai se l'istruzione giusta è exit o break. Prova
 

nim

Utente Attivo
11 Ott 2011
96
0
0
grazie dell'aiuto ma verrebbe semplicemente così
PHP:
<?php
    $user = $facebook->getUser();


    if ($user) {
        $user_profile = $facebook->api('/me');
        $friends = $facebook->api('/me/friends');

        
$i = 1; 
        foreach ($friends["data"] as $value) {
            
            echo '<div class="pic">';
            echo '<a href="http://www.facebook.com/' . $value["id"] . '"><img width="3%" height="3%" src="https://graph.facebook.com/' . $value["id"] . '/picture"/></a>';
            echo '</div>';
            
         

        }
       
$i++; 
    if ($i == 15) { 
        break; 
    } 
    }
?>
oppure dovrei metterci un ciclo for ?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Va bene cosi ma l'incremento e la verifica devi inserirla nel foreach

PHP:
<?php

$user = $facebook->getUser();
if ($user) {
    $user_profile = $facebook->api('/me');
    $friends = $facebook->api('/me/friends');


    $i = 1;
    foreach ($friends["data"] as $value) {

        echo '<div class="pic">';
        echo '<a href="http://www.facebook.com/' . $value["id"] . '"><img width="3%" height="3%" src="https://graph.facebook.com/' . $value["id"] . '/picture"/></a>';
        echo '</div>';

        if ($i == 15) {
            break;
        }
        $i++;
    }
}
?>

se non si ferma a 15 cambia break; con exit();
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Confermo l'istruzione break;

con exit(); interrompi l'esecuzione anche del resto della pagina