Sei sulla pagina 1di 3

/* vrem sa construim un vector in care fiecare element sa fie initializat cu o valoare dinamica si incrementala; avem,

asadar, o aceeasi operatie care se repeta de mai multe ori, motiv pentru care vom folosi un for */
$vector = array();
$n = 10;

# operatia repetitiva: definirea si initializarea unui element al vectorului # conditia de continuare: inca nu s-au efectuat
$n repetari # nota: in acest caz cunoastem numarul de repetari, dat de variabila $n

for( $i = 1; $i <= $n; $i++) {


# intre paranteze se specifica expresia de initializare $i = 1
# conditia de continuare $i <= $x si o expresie de iterare $i++
$vector[ $i ] = "php$i"; # aceasta este operatia
}
print_r( $vector );
/*afiseaza:
Array ( [1] => php1
[2] => php2
[3] => php3
[4] => php4
[5] => php5
[6] => php6
[7] => php7
[8] => php8
[9] => php9
[10] => php10
)
*/
Cum afisez o lista de link-uri?
<?php
/* similar exemplului anterior */
# operatia repetitiva: afisarea unui element de tip <li> cu valori dinamice # conditia de continuare: inca nu s-au efectuat
$n repetari # va trebui sa avem lista de link-uri definita intr-un vector.
$links = array( 'www.punctsivirgula.ro',
'php.punctsivirgula.ro',
'php.punctsivirgula.ro?despre',
'php.punctsivirgula.ro?legal'
);
# determin lungimea listei
$n = count( $links );
# avand lungimea, folosesc o structura for pentru a afisa lista
echo '<ul>';
for( $i = 0; $i < $n; $i++ ) {
echo <<<LINK
<li>
<a href="http://{$links[ $i ]}" title="{$links[ $i ]}">{$links[ $i ]}</a>
</li>
LINK;
}
echo '</ul>';
?>
Rezultat:
– www.punctsivirgula.ro
– php.punctsivirgula.ro
– php.punctsivirgula.ro?despre
– php.punctsivirgula.ro?legal
/* similar exemplului anterior */
Cum afisez un element de tip select cu valori de la 1 la 100?
$end = 100;

# operatia repetitiva: afisarea unui element de tip <option> # conditia de continuare: inca nu s-au efectuat $end repetari
# nota: ca zi in cazul anterior se cunoaste numarul de repetari

print "<select>";
for( $i = 1; $i <= $end; $i++ ) {
print "<option value=\"$i\">$i</option>\n";
}
print "</select>";

Cum afisez un element de tip select cu toate tarile?

# ne trebuie o lista de tari. Cel mai uzual pastram doar codul tarii, iar numele il afisam doar.
# Astfel, optiunile vor avea ca "value" codul tarii iar ca "text" - numele.

$countries = array(
'AF'=>'Afghanistan',
'AL'=>'Albania',
'DZ'=>'Algeria',
'AS'=>'American Samoa',
'AD'=>'Andorra',
'AO'=>'Angola',
'AI'=>'Anguilla',
'AQ'=>'Antarctica',
'AG'=>'Antigua And Barbuda',
'AR'=>'Argentina',
'AM'=>'Armenia',
/* ... */
'WS'=>'Western Samoa',
'YE'=>'Yemen',
'YU'=>'Yugoslavia',
'ZM'=>'Zambia',
'ZW'=>'Zimbabwe'
);

# avand un array asociativ, este mai dificil sa-i accesam elementele, asa ca nu vom
# mai folosi for. Vom folosi in schimb un iterator

echo '<select name="tara">', "\n"; # afisez pe alt rand pentru a aseza in pagina sursa HTML
foreach( $countries as $code => $name ) {
echo '<option value="', $code, '">', $name, '</option>', "\n";
}
echo "</select>\n";

?>
Cum caut o valoare intr-un vector?
/* avem un vector cu un numar necunoscut de valori; vrem sa cautam valoarea 0
* folosind o structura repetitiva */

$vector = array( 3, 4, 5, 1, 2, 9, 76, 42, 2, 9, 6, 0, 4, 1, 10 );

# operatia repetitiva: se verifica daca elementul curent al vectorului este 0


# conditia de oprire: elementul curent este 0 sau s-a ajuns la finalul vectorului
# nota: desi putem afla numarul de elemente al vectorului, in functie de care
putem determina numarul maxim de repetari, se va folosi structura while
$gasit = false;
$pozitie = 0; // plecam de la primul element

// parcurgem vectorul pana cand ajungem la final sau gasim valoarea 0


while( !$gasit ) { // echivalent cu while( $gasit == false )
// verific daca elementul curent (initial primul element) este 0
if( $vector[ $pozitie ] == 0 ) {
$gasit = true;
print "Am gasit 0 pe pozitia $pozitie";
}

// trec la pozitia urmatoare pentru verificare


$pozitie++;
// spre deosebire de "for" incrementarea trebuie realizata explicit

// verific daca am ajuns la sfarsitul verctorului


if( $pozitie == count( $vector ) ) {
$gasit = true; // ca sa nu mai repete
print "Nu am gasit 0 in vectorul asta";
}
}

# in limbaj natural, instructiunea while se poate transpune in "cat timp


# conditia este indeplinita executa operatiunea"

/* afiseaza
Am gasit 0 pe pozitia 11
*/
Sau folosind array_search:
// alternativa
$vector = array( 3, 4, 5, 1, 2, 9, 76, 42, 2, 9, 6, 0, 4, 1, 10 );

$pozitie = array_search(0, $vector );

if( $pozitie === false ) print "Nu am gasit 0 in vectorul asta";


else print "Am gasit 0 pe pozitia $pozitie";

Potrebbero piacerti anche