Hrátky s poli v PHP
Vydáno: 19.05.07 Kategorie: php
PHP pole sdružují prvky, které spolu určitým způsobem souvisejí. Práce s poli ze začátku působí možná trošku komplikovaně (jak se řéká, čuměl jsem jak puk), ovšem jsou jedním z nejdůležitějších částí PHP. Jakmile vám přejdou do krve, budete jejich vlastnostmi nadšeni.
V příkladu jsou použity ukázky kódu, se kterými jsem si hrál abych se s poli důkladně seznámil. Příklady jsou opatřeny důkladnými komentáři, takže by neměl být problém se v nich vyznat.
<?php
$moje_pole = array(2=>"únor","březen","duben","květen"); //začni index pole od 2
echo $moje_pole[3];
$nove_pole["januar"] = "leden"; //definování indexu pole jako řetězce
$nove_pole["februar"] = "únor";
$nove_pole["march"] = "březen";
$novejsi_pole = array("april"=>"duben", "may"=>"květen", "december"=>"prosinec"); //definování indexů polí jako řetězce
echo "<br /> Takže opakuji " . $nove_pole["march"] . " a posledním měsícem je " . $novejsi_pole["december"] . "<br />";
?>
<?php
$jmena[] = "jan";
$jmena[] = "petr";
$jmena[] = "pavel";
//Nastavení ukazatele na začátek pole - RESET
echo "<p>";
for ($i=0; $i<count($jmena); $i++): //cyklus dokud je proměnná i menší než počet polí
echo current($jmena) . "<br />";
reset($jmena); //přesuneme se opět na první pole
endfor;
echo "</p>";
//Nastavení ukazatele na konec pole - END
echo "<p>";
for ($i=0; $i<count($jmena); $i++):
end($jmena); //přesuneme se na poslední pole
echo current($jmena) . "<br />";
endfor;
echo "</p>";
//Načtení aktuální hodnoty pole - CURRENT
echo "<p>";
reset($jmena); //od začátku
for ($i=0; $i<count($jmena); $i++):
echo current($jmena) . "<br />";
next($jmena); //skoč na další pole
endfor;
echo "</p>";
//Přemístění ukazatele na následující hodnotu - NEXT
echo "<p>";
reset($jmena); //od začátku
for ($i=0; $i<count($jmena); $i++):
echo next($jmena) . "<br />"; //skoč na další a vypiš (přeskočí první)
endfor;
echo "</p>";
//Přemístění ukazatele na předchozí hodnotu - PREV
echo "<p>";
end($jmena); //od konce
for ($i=0; $i<count($jmena); $i++):
echo prev($jmena) . "<br />"; //skoč na přechozí a vypiš (přeskočí poslední)
endfor;
echo "</p>";
//zjištění aktuální pozice ukazatele - KEY
echo "<p>";
reset($jmena); //od začátku
for ($i=0; $i<count($jmena); $i++):
echo key($jmena) . "-";
echo current($jmena) . "<br />";
next($jmena);
endfor;
echo "</p>";
//Přiřazení hodnot polí do proměnných - LIST
list($promenna_jan, $promenna_petr, $prommena_pavel) = ($jmena);
echo $promenna_jan, $promenna_petr, $prommena_pavel;
//////////////////////
//načtení všech indexů a hodnot polí - EACH
$druh[] = "jabka";
$druh[] = "hrušky";
$druh[] = "pomeranče";
while (list($index,$hodnota) = each($druh))
print "<p style=\"background:yellow\">$index - $hodnota </p>";
//provedení funkce pro každý prvek pole - ARRAY_WALK
reset($druh);
function print_array($prvek)
{
echo "$prvek<br />";
}
array_walk($druh, "print_array");
//seřazení prvků v poli
// - SORT (seřadí ale nezanechá původní indexy)
// - RSORT (seřadí sestupně, nezanechá indexy)
// - ASort (seřadí, zanechá původní indexy)
// - ARSort (seřadí sestupně, zanechá původní indexy)
function pole_init()
{
global $radicka;
$radicka[0] = "první";
$radicka[1] = "druhý";
$radicka[2] = "třetí";
}
function vypis_prvky($radicka) //funkce na výpis prvků pole radicka
{
while (list($index,$hodnota) = each($radicka))
print "$index - $hodnota<br />";
}
pole_init(); //zavolám funkci pro vytvoření pole
sort($radicka); //seřadit prvky s novými indexy
echo "<p style=\"background:pink\">";
vypis_prvky($radicka); //zavoláme funkci pro výpis indexů pole a jejich hodnot
echo "</p>";
pole_init(); //zavolám funkci pro vytvoření pole
rsort($radicka); //seřadit prvky pozpátku s novými indexy
echo "<p>";
vypis_prvky($radicka); //zavoláme funkci pro výpis indexů pole a jejich hodnot
echo "</p>";
pole_init(); //zavolám funkci pro vytvoření pole
asort($radicka); //seřadit prvky se zachováním indexů
echo "<p style=\"background:green\">";
vypis_prvky($radicka); //zavoláme funkci pro výpis indexů pole a jejich hodnot
echo "</p>";
pole_init(); //zavolám funkci pro vytvoření pole
arsort($radicka); //seřadit prvky pozpátku se zachováním indexů
echo "<p style=\"background:yellow\">";
vypis_prvky($radicka); //zavoláme funkci pro výpis indexů pole a jejich hodnot
echo "</p>";
//zjištění zad-li je hodnota obsažena v poli - IN_ARRAY
$prohlizec = array("IE6", "IE7", "Firefox", "Opera");
if (in_array ("Firefox", $prohlizec)) { //jestliže je v poli prohlizec prvek Firefox
print "Firefox je nejlepší";
}
else {
print "Není tam nejlepší prohlížeč Firefox";
}
?>
JersyWoo · 25 06 2007 - 14:01
Malý tip pro zvýšení rychlosti:
Když budeš obsah (echo jednoho řádku) cyklu for cpát do proměnné a teprve potom uděláš echo proměnné, proběhne script rychleji :-)