TechnoZona.net
Всичко за банята BaniZona.com

Начало » Компютри » Научи РНР - Урок 4, масиви


Научи РНР - Урок 4, масиви


Какво е масив?

Масива е набор от променливи, които са подредени по определен начин. Можем да различим два типа масиви в РНР - числови и асоциативни. Числовите са характерни с това, че всеки елемент на масива се индексира с пореден номер, а асоциативните се индексират със символен низ.

Деклариране на масив

Масив се декларира по следния начин:

$arr = array():

В скобите може да зададете и големина на масива, ако е известна предварително. За пример ако масивът ви е от 20 елемента в скобите записвате "0..19". Т.е. номерирате ги от 0 до 19. Може да зададете и стойностите на масив при декларирането му:

$arr = array( 0 => 'Ivan',
1 => 'Pesho');

Това е числен масив с два елемента - 1 и 2. ето и пример за асоциативен масив:

$arr = array( 'name' => 'Ivan',
'age' => 21);

За разлика от други езици за програмиране, в РНР няма проблем един масив да съдържа различни типове данни, точно както в предния пример. елементът name е символен низ, докато age е число.

Достъп до стойности на масив

Ако масива е числен до отделните му стойности се достига по следния начин:

$arr[0] = 1;

А ако е асоциативен:

$arr['name'] = 'Ivan';

Приложение

Масивите са много често използвани типове данни. Тъй като понякога се налага да имате множество променливи, те често е удобно да бъдат в масив. Частен случай на масива е символният низ. Това е масив от символи. Вижда се, че приложението на тази структура е много голямо и всеобхватно и точно за това съм отделел един цял урок само за масиви.
Ще ви подскажа че в някой случаи функция може да изисква множество параметри. Ако те са изброени със запетая, това често ще води до грешки. Решеинето е да обедините тези параметри в асоциативен масив и да предадете само него. Така единственото, което трябва да съобразявате е какво записвате в масива.

Многомерни масиви

Ако имате ситуация, в която трябва да манипулирате точки от координатна система, ще ви се наложи да ползвате таблица от стойности. Масивите могат да бъдат представени и като такива структури, по следния начин:

$arr = array( array() ):

Това всъщност е двумерен масив и до елементите му се достига с два индекса: $arr[0][1].

Работа с масиви

Нека първо да разгледаме достигане до всчки стойности на даден масив с цикъл for:

for ($i=0 ; $i < 5; $i++ )
echo $products[$i];

Този код ще изведе към браузера съдържанието на първите 5 елемента от масива $products. За улеснение в РНР има специален цикъл, който работи само с масиви. Ето аналог на горния код:

foreach ($products as $costs)
echo $costs;

Този цикъл ще предава при всяко превъртане на $costs стойността, отговаряща за поредния индекс. За работа с асоциативен масив ползвайте:

foreach($products as $name => $cost)
echo "Наименование на продукта: {$name}; Цена: {$cost};";

Така извеждате имената и цените на продуктите, съдържащи се в масива $products. Моще също така да ползвате ключовата дума each :

while ($element = each( $products ))
echo "Наименование на продукта: {$element['key']};Цена: {$element['value']};" ;

Можем да направим същото и с list:

while ( list($name, $price) = each( $products ) )
echo "$name - $price";

Кой метод ще изберете - това е донякъде лично предпочитание. Изберете това, което ви се струва най-ясно.

Сортиране

Много често се налага данни в даден масив да бъдат сортирани. Ще се спра на най-важните функции. Първата е сортиране по азбучен ред:

sort($products);

Ако искате да направите сортиране в обратен азбучен ред, ползвайте rsort(); . Ако масива е асоциативен, може да сортирате по ключ - asort() или по стойност - ksort(). В обратен ред тези функции са arsort() и krsort().

Соритране на многомерни масиви

За сортирането на многомерен масив е нужно да си създадете функция за сравнение. Тя трябва да има 2 параметъра и да връща 0 за еквивалентност, 1 за по-голямо и -1 за по-малко. Нека си дефинираме такава:

function compare($x, $y)
{
if ($x[1] == $y[1])
return 0;
else if ($x[1] > $y[1])
return 1;
else
return -1;
}

Сега за да соритраме двумерен масив по втория индекс.Можем да изпълним сортирането със следната функция:

usort($products, 'compare');

За да преброите броя на променливите в масив използвайте count().

 

върни се в началото   изпрати на приятел   версия за печат сподели във FACEBOOK  

КОМЕНТАРИ


Заглавие : Извинявам се много

Автор : GodforalL

email :

В следните редове няма ли грешка ?
$arr = array():
$arr = array( array() ):
подчертал съм с червено там където мисля че има грешка, а именно вместо ":" не трябва ли да има ";", поне на мен ми дава грешка когато го изкопирам директно.
Ако нещо не съм разбрал, моля да ме извините.
П.С.
Много хубави статии и наистина ми помагат доста, мерси много :)


Заглавие : прав сте

Автор : Венелин Рангелов

email : info@eadvise.info

Благодаря за поправката. Символа ";" означава край на операнд. Тоест в края на реда трябва да има ;, а не : - това е техническа грешка и ще я поправя в първия удобен момент.


Заглавие : малко помощ

Автор : Krasi

email : underscore@netbg.com

не успявам да разбера как се работи с многомерен масив.

търся пример: в който масива да садържа три
колони "Име" "Години" "Допълнителна информация" и неограничен брой редове.
Как се добавя нов ред в масива.
Как се променя същестуващо поле от дадения масив.
Как се сортира масива по "Години"  или "Допълнителна информация"


Заглавие : малко помощ

Автор : Венелин Рангелов

email : info@eadvise.info

Ето как бихте въвели многомерния масив:
$t = array( array("Ivan", 24, "info1"),
array("Pesho", 25, "info2"));

Извикването му става с echo($t[1][1]); (резултатът ще е 25).
За да смените стойност присвоявате на променливата $t[i][j] стойност, където i и j са съответно реда и колоната в масива.

Нов ред в случая може да добавите по следния начин:
$t[2] = array("Miro", 26, "info3");

За сортиране - ползвайте sort();


Заглавие : Моля Ви спешно е !

Автор : vitlzvezda

email :

Здравейте! Имам голяма молба SmileТрябва ми решение не следната задача :Да се направи програма на Паскал,която въвежда масив от реални числа с n елемента n(1<= n<=20),намира сумата от положителните му елементи,произведението на отрицателните елементи и броя на нулевите елементи.МОЛЯ ВИ СПЕШНОООО Е И Е МНОООГО ВАЖНООО !!!!!! Благодаря Smile


Заглавие : dvumeren masiv

Автор : fatmish

email : ..

moje li da ni kajete ka se deklarira dvumeren masiv?????


Заглавие : Pomognete mi ako mojete

Автор : Aleksandra

email : otka4enoto_drebosy4e.com@abv.b

Zdraveite:) Ako nqkoi moje da mi pomogne  mn 6te sym mu bladogarna :)
1Da se napravi programa na paskal koqto da presmqta sumata na elementite o glavniq diagonal na masiva T s razmeri [9,11]
2da se sybere masiva A s razmeri[4,5] s masiva B[4,5].


Заглавие : dvumeren masiv

Автор : danmix

email :

C++
Да се въведат произволни целочислени стойности в двумерен масив d(m,n). Програмата да организира прехвърлането в два нови едномерни масива на четни и нечетни числа от d, а нулевите стоиности не се прехвърлят.
Благодаря предварително.


Заглавие : Trqbva mi pomo6t

Автор : Zla7i7y

email : Zlatin4eto_15@abv.bg

Pls,trrbva mi re6enie na zada4a: daden e masiv A ,n-po malko ot 100,da se sastavi programa za namirand na nulevite stoinosti na masiva. znam 4e e elementarna,no be6e predi godini,kogato gi u4ih i imam mn begli spomdni.10x predvaritelno

ПУБЛИКУВАНЕ НА МНЕНИЕ

ФОРМАТИРАНЕ:

Забележка: Няма да бъдат допускани нецензурни изказвания!

За нас | Публикувай статия | Рекламна програма | Контакти | Авторски права | Полезни връзки | Новини | Добави в любими

Copyright 2005-2008 Уеб дизайн rVertis. All rights reserved.

Tyxo.bg counter