PHP kalbos Masyvai
Parašė NOD32 2006 rugsėjo 6 20:09:10
Sveiki!
Pabandysiu jus apšviesti kas per daiktas yra masyvas ir jo elementai bei kaip tai veikia.

Tai va, pirmiausia masyvais vadinamos duomenų grupės, kurių reikšmės nurodomos kintamaisiais su indeksais. Masyvo vardas žymi visą jame saugomų duomenų grupę, o indeksas nurodo konkrečios reikšmės (elemento) vietą šioje grupėje:


Masyvo vardas[Indeksas]


Indeksai gali būti sveikieji skaičiai arba masyvo elementų žymėjimui parinktos simbolių eilutės (vardai). Pirmuoju atveju pirmojo masyvo elemento indeksas yra 0. Masyvai sukuriami apibrėžiant programos tekste jų elementų reikšmes, pavyzdžiui:


$asmuo[0] = "Jonas";
$asmuo[1] = "Ona";
$asmuo[2] = "Vilma";
$pareigos['Jonas'] = "Direktorius";
$pareigos['Ona'] = "Administratorė";
$pareigos['Ona'] = "Sekretorė";


Naudojant konstruktorių array, galima iš karto apibrėžti visą masyve saugomų reikšmių rinkinį:


$asmuo = array("Jonas","Ona","Vilma"); //Masyvas su skaitiniais indeksais
$pareigos('Jonas'=> "Direktorė",'Ona'=> " Administratorė",'Vilma'=> "Sekretorė"); //Masyvas su vardiniais indeksais


Masyvus su sveikųjų skaičių ir lotyniškų raidžių alfabeto atkarpomis sukuria funkciją range:


$sk = range(2,5); //Sukuriamas masyvas su skaičiais (2,3,4,5)
$raid = range('a','z'); //Sukuriamas mažųjų lotyniškų raidžių masyvas
$revers = range(5,2); //Sukuriamas masyvas su skaičiais (5,4,3,2)


Niaujant funkciją explode, galima suformuoti masyvą iš simbolių eilutėje įrašytų žodžių arba teksto fragmentų. Šios funkcijos pirmasis argumentas turi nurodyti eilutėje naudojamą skirtuko simbolį, o antrasis - eilutę su masyvui perduodamų fragmentų rinkiniu, pavyzdžiui:


$tekstas = "Jonas,Ona,Vilma";
$masyvas = explode (',',$tekstas); //Rezultato masyvas: ("Jonas","Ona","Vilma")


Vietoj funkcijos explode galima naudoti jai analogišką funkciją split. Atvirkščią veiksmą (simbolių eilutės formatavimą iš masyvo elementų) aprašo funkcijos imlode ir join, kurios yra identiškos, atlieka tuos pačius veiksmus. Funckijos join taikymo pavyzdys:


$masyvas = ("Jonas","Ona","Vilma");
$tekstas = join (",",$masyvas); //Rezultato eilutė: "Jonas,Ona,Vilma"


Apdorojant masyvuose saugomus duomenis, naudojami visų jų elementų perrinkimo ciklai. Kai indeksai yra skaičiai, tai galima padaryti su ciklu for, pavyzdžiui:


$asmuo = array("Jonas","Ona","Vilma"); //Masyvo sukūrimas
echo "Masyvo duomenys:
";
for ($sk= 1; $sk<=sizeof($sk);$sk++) //Masyvo perrinkimo ciklas
echo "$sk : $asmuo[$sk]
"; //Elemento perdavimas naršyklei


Šiame pavyzdyje naudojama funkcija sizeof skaičiuoja jos argumento nurodomo masyvo elementų skaičių. Patogiau masyvų perrinkimą, naudojama tokia atmaina:


foreach (Masyvo vardas as Elementas) {
Kartojami veiksmai ;
}


Ciklas kartojamas tiek kartų, kiek masyve yra elementų, ir kiekviena pakartojimo metu kintamajam Elementas suteikiama vis kito masyvo elemento reikšmė, pavyzdžiui:


$asmuo = array ("Jonas,"Ona",Vilma"); //Masyvo sukūrimas
foreach ($asmuo as $vardas) { //Masyvo perrinkimo ciklas
echo "vardas $vardas
"; //Vardų perdavimas naršyklei
}


Masyvų su vardiniais indeksais parinkimui naudojamo ciklo foreach atmainos aprašymo sintaksė tokia:


foreach (Masyvas as Elementas =>Vardas) {
Kartojami veiksmai;
}


Šios ciklo atmainos panaudojimo pavyzdys:


$pareigos('Jonas'=> "Direktorius",'Ona' => "Adminsitartorė",'Vilma'=> "Sekretorė");
foreach ($pareigos as $pavadinimas => $vardas) {
echo "Asmens $vardas pareigos yra $pavadinimas.
";
}


Viso masyvo duomenis iš karto į naršyklės langą perduoda funkcija print_r. Kai šios funkcijos argumentas yra masyvas, naršyklės lange įrašomas žodis Array ir už jo skliaustuose išvardijamos masyvo elementų reikšmės, pavyzdžiui:


$a('Jonas'=>"Direktorius",'Ona' => "Administartorė", 'Vilma'=> "Sekretorė");
print_r($a);


Dažniausiai toks spausdinimas atliekamas derint PHP programas. Įvykdžius aprašytą programos fragmentą, naršyklės lange bus rodomi tokie duomenys:


Array
(
[Jonas] =>Direktorius
[Ona] => Administratorė
[Vilma] => Sekretorė
)


Prieš aprašant masyvo kintamajam taikomus veiksmus kartais naudinga pasitikslinti, ar kintamasis tikrai yra masyvo tipo. Tai padaryti leidžia loginė funkcija is_ Sveiki!
Pabandysiu jus apšviesti kas per daiktas yra masyvas ir jo elementai bei kaip tai veikia.

Tai va, pirmiausia masyvais vadinamos duomenų grupės, kurių reikšmės nurodomos kintamaisiais su indeksais. Masyvo vardas žymi visą jame saugomų duomenų grupę, o indeksas nurodo konkrečios reikšmės (elemento) vietą šioje grupėje:


Masyvo vardas[Indeksas]


Indeksai gali būti sveikieji skaičiai arba masyvo elementų žymėjimui parinktos simbolių eilutės (vardai). Pirmuoju atveju pirmojo masyvo elemento indeksas yra 0. Masyvai sukuriami apibrėžiant programos tekste jų elementų reikšmes, pavyzdžiui:


$asmuo[0] = "Jonas";
$asmuo[1] = "Ona";
$asmuo[2] = "Vilma";
$pareigos['Jonas'] = "Direktorius";
$pareigos['Ona'] = "Administratorė";
$pareigos['Ona'] = "Sekretorė";


Naudojant konstruktorių array, galima iš karto apibrėžti visą masyve saugomų reikšmių rinkinį:


$asmuo = array("Jonas","Ona","Vilma"); //Masyvas su skaitiniais indeksais
$pareigos('Jonas'=> "Direktorė",'Ona'=> " Administratorė",'Vilma'=> "Sekretorė"); //Masyvas su vardiniais indeksais


Masyvus su sveikųjų skaičių ir lotyniškų raidžių alfabeto atkarpomis sukuria funkciją range:


$sk = range(2,5); //Sukuriamas masyvas su skaičiais (2,3,4,5)
$raid = range('a','z'); //Sukuriamas mažųjų lotyniškų raidžių masyvas
$revers = range(5,2); //Sukuriamas masyvas su skaičiais (5,4,3,2)


Naujant funkciją explode, galima suformuoti masyvą iš simbolių eilutėje įrašytų žodžių arba teksto fragmentų. Šios funkcijos pirmasis argumentas turi nurodyti eilutėje naudojamą skirtuko simbolį, o antrasis - eilutę su masyvui perduodamų fragmentų rinkiniu, pavyzdžiui:


$tekstas = "Jonas,Ona,Vilma";
$masyvas = explode (',',$tekstas); //Rezultato masyvas: ("Jonas","Ona","Vilma")


Vietoj funkcijos explode galima naudoti jai analogišką funkciją split. Atvirkščią veiksmą (simbolių eilutės formatavimą iš masyvo elementų) aprašo funkcijos imlode ir join, kurios yra identiškos, atlieka tuos pačius veiksmus. Funkcijos join taikymo pavyzdys:


$masyvas = ("Jonas","Ona","Vilma");
$tekstas = join (",",$masyvas); //Rezultato eilutė: "Jonas,Ona,Vilma"


Apdorojant masyvuose saugomus duomenis, naudojami visų jų elementų perrinkimo ciklai. Kai indeksai yra skaičiai, tai galima padaryti su ciklu for, pavyzdžiui:


$asmuo = array("Jonas","Ona","Vilma"); //Masyvo sukūrimas
echo "Masyvo duomenys:
";
for ($sk= 1; $sk<=sizeof($sk);$sk++) //Masyvo perrinkimo ciklas
echo "$sk : $asmuo[$sk]
"; //Elemento perdavimas naršyklei


Šiame pavyzdyje naudojama funkcija sizeof skaičiuoja jos argumento nurodomo masyvo elementų skaičių. Patogiau masyvų perrinkimą, naudojama tokia atmaina:


foreach (Masyvo vardas as Elementas) {
Kartojami veiksmai ;
}


Ciklas kartojamas tiek kartų, kiek masyve yra elementų, ir kiekvieno pakartojimo metu kintamajam Elementas suteikiama vis kito masyvo elemento reikšmė, pavyzdžiui:


$asmuo = array ("Jonas,"Ona",Vilma"); //Masyvo sukūrimas
foreach ($asmuo as $vardas) { //Masyvo perrinkimo ciklas
echo "vardas $vardas
"; //Vardų perdavimas naršyklei
}


Masyvų su vardiniais indeksais parinkimui naudojamo ciklo foreach atmainos aprašymo sintaksė tokia:


foreach (Masyvas as Elementas =>Vardas) {
Kartojami veiksmai;
}


Šios ciklo atmainos panaudojimo pavyzdys:


$pareigos('Jonas'=> "Direktorius",'Ona' => "Adminsitartorė",'Vilma'=> "Sekretorė");
foreach ($pareigos as $pavadinimas => $vardas) {
echo "Asmens $vardas pareigos yra $pavadinimas.
";
}


Viso masyvo duomenis iš karto į naršyklės langą perduoda funkcija print_r. Kai šios funkcijos argumentas yra masyvas, naršyklės lange įrašomas žodis Array ir už jo skliaustuose išvardijamos masyvo elementų reikšmės, pavyzdžiui:


$a('Jonas'=>"Direktorius",'Ona' => "Administratorė", 'Vilma'=> "Sekretorė");
print_r($a);


Dažniausiai toks spausdinimas atliekamas derint PHP programas. Įvykužius aprašytą programos fragmentą, naršyklės lange bus rodomi tokie duomenys:


Array
(
[Jonas] =>Direktorius
[Ona] => Administratorė
[Vilma] => Sekretorė
)


Prieš aprašant masyvo kintamajam taikomus veiksmus kartais naudinga pasitikslinti, ar kintamasis tikrai yra masyvo tipo. Tai padaryti leidžia loginė funkcija iš array, kurios argumentas yra kintamasis, o grąžinama reikšmė true nurodo, kad tai yra masyvas. Ir tai beveik viskas ką jums reikėtų žinoti apie masyvą.

---------------------------

Radę gramatinių, loginių ar viename iš pavyzdinių kodų klaidų praneškite.

Ā©NOD32




array, kurios argumentas yra kintamasis, o grąžinama reikšmė true nurodo, kad tai yra masyvas. Ir tai beveik viskas ką jums reikėtų žinoti apie masyvą.

---------------------------

Radę gramatinių, loginių ar viename iš pavyzdinių kodų klaidų praneškite.

Ā©NOD32