Hrátky s poli v PHP

Vydáno: 19.05.07 Kategorie:

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";
}

?>

Komentáře

  1. JersyWoo · 25 06 2007 - 14:01

    # 1

    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 :-)



Přidat komentář








Formát Texy