Code 1-How to work with PHP Arrays

0
197
Courses - Development - Back-End - Codes - How to work with PHP Arrays Correctly

Հիմունքներ

Սկսենք մի պարզ ֆունկցիայից, որը աշխատում է array-ի տարրերի key-երի և value-ների հետ: Այդ ֆունկցիաներից մեկը array_combine () է, որը ստեղծում է նոր array երկու գոյություն ունեցողներից array-ներից. Առաջինն օգտագործվում է key-եր ստեղծելու համար, երկրորդը՝ որպես value-ներ:

$keys = ['sky', 'grass', 'orange'];
$values = ['blue', 'green', 'orange'];
$array = array_combine($keys, $values);
print_r($array);
$keys = ['sky', 'grass', 'orange'];
$values = ['blue', 'green', 'orange'];
$array = array_combine($keys, $values);
print_r($array);

Նույն համատեքստում array_values() ֆունկցիան կարող է օգտակար լինել ձեզ համար: Այն վերադարձնում է արժեքները ասոցիատիվ array-ից: array_keys() վերադարձնում է միայն տրված array-ի key-երը, array_flip() ֆունկցիան փոփոխում է key-երի և value-ների տեղերը:

print_r(array_keys($array)); 
print_r(array_values($array));
print_r(array_flip($array));
print_r(array_keys($array)); 
print_r(array_values($array));
print_r(array_flip($array));

Կոդի օպտիմիզացիա

list() ֆունկցիան, որն ըստ էության լեզվական կառուցվածք է, թույլ է տալիս մի շարք փոփոխականների array-ի արժեքներ նշանակել: list() ֆունկցիայի հետ աշխատելու պարզ օրինակ.

// Define Array
$array = ['a', 'b', 'c'];
// Without list()
$a = $array[0];
$b = $array[1];
$c = $array[2];
// With list()
list($a, $b, $c) = $array;
// Define Array
$array = ['a', 'b', 'c'];
// Without list()
$a = $array[0];
$b = $array[1];
$c = $array[2];
// With list()
list($a, $b, $c) = $array;

Այս ֆունկցիան հիանալի աշխատում է preg_slit() կամ explode() ֆունկցիաների հետ: array-ից կարող եք հետ վերցնել միայն այն արժեքները, որոնք իսկապես անհրաժեշտ են.

$string = 'Hello|Wild|World';
list($hello, , $world) = explode('|', $string);
echo("$hello, $world");
$string = 'Hello|Wild|World';
list($hello, , $world) = explode('|', $string);
echo("$hello, $world"); // Hello, World

list() ֆունկցիան կարող ենք նաև տեղադրել foreach-ի մեջ.

$arrays = [[1, 2], [3, 4], [5, 6]];
foreach ($arrays as list($a, $b)) {
    $c = $a + $b;
    echo($c . ', '); // 3, 7, 11
}
$arrays = [[1, 2], [3, 4], [5, 6]];
foreach ($arrays as list($a, $b)) {
    $c = $a + $b;
    echo($c . ', '); // 3, 7, 11
}

Դուք կարող եք օգտագործել extract() ֆունկցիան՝ ասոցիատիվ array-ից արժեքներ ստանալու համար: Արդյունքում, դուք կստանաք փոփոխականների մի շարք (որոնց անունները համընկնում են array-ի key-երի հետ).

$array = [
    'clothes' => 't-shirt',
    'size' => 'medium',
    'color' => 'blue',
];
extract($array);
echo("$clothes $size $color");
$array = [
    'clothes' => 't-shirt',
    'size' => 'medium',
    'color' => 'blue',
];
extract($array);
echo("$clothes $size $color");

Պետք է զգույշ լինել extract() ֆունկցիայի հետ աշխատելիս, հատկապես օգտատիրոջ տվյալների մասով, ուստի խորհուրդ է տրվում օգտագործել EXTR_IF_EXISTS և EXTR_PREFIX_ALL const-ները:
Հակառակ գործողությունը կատարելու համար կարող եք օգտագործել compact() ֆունկցիան, որը կստեղծի փոփոխականների շարքի array.

$clothes = 't-shirt';
$size = 'medium';
$color = 'blue';
$array = compact('clothes', 'size', 'color');
print_r($array);
$clothes = 't-shirt';
$size = 'medium';
$color = 'blue';
$array = compact('clothes', 'size', 'color');
print_r($array);

Ֆիլտրելու ֆունկցիաներ

array_filter() ֆունկցիան լավագույնս համապատասխանում է տվյալների ֆիլտրման համար: Որպես պարամետրեր պետք է փոխանցվեն array՝ անանուն ֆունկցիայի մեչ: Որպեսզի տարրը array-ում save լինի, վերադարձրեք true, հակառակ դեպքում՝ false

$numbers = [20, -3, 50, -99, 55];
$positive = array_filter($numbers, function ($number) {
    return $number > 0;
});
print_r($positive);
$numbers = [20, -3, 50, -99, 55];
$positive = array_filter($numbers, function ($number) {
    return $number > 0;
});
print_r($positive);

Array-ը կարող եք ֆիլտրել նաև key-երով: Դա անելու համար օգտագործեք երրորդ պարամետրը՝ ARRAY_FILTER_USE_KEY կամ ARRAY_FILTER_USE_BOTH const-ները:
Բացի այդ, դուք կարող եք օգտագործել array_filter() ֆունկցիան՝ առանց արգումենտների: Արդյունքում, բոլոր դատարկ արժեքները array-ից կհեռացվեն.

$numbers = [-1, 0, 1];
$not_empty = array_filter($numbers);
print_r($not_empty);
$numbers = [-1, 0, 1];
$not_empty = array_filter($numbers);
print_r($not_empty);

Array-ից միայն unique արժեքներ ստանալու համար օգտագործեք array_unique() ֆունկցիան: Պետք է նշել, որ միայն հայտնաբերված առաջին տարրերը կներառվեն ստացված array-ում.

$array = [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5];
$uniques = array_unique($array);
print_r($uniques);
$array = [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5];
$uniques = array_unique($array);
print_r($uniques);

array_column() ֆունկցիան օգտակար է, եթե անհրաժեշտ է որոշակի սյունակ գտնել բազմաչափ array-ում: Դա կարող է լինել CSV ֆայլի SQL բազա: Դուք պետք է նշեք array-ի և սյունակի անունը.

$array = [
    ['id' => 1, 'title' => 'tree'],
    ['id' => 2, 'title' => 'sun'],
    ['id' => 3, 'title' => 'cloud'],
];
$ids = array_column($array, 'id');
print_r($ids);
$array = [
    ['id' => 1, 'title' => 'tree'],
    ['id' => 2, 'title' => 'sun'],
    ['id' => 3, 'title' => 'cloud'],
];
$ids = array_column($array, 'id');
print_r($ids);

PHP 7-ում array_column() ֆունկցիան ստացել է օբյեկտի դաշտերի հետ փոխազդելու հնարավորություն: Սա մեծապես պարզեցնում է աշխատանքը մոդելների array-ների հետ.

$cinemas = Cinema::find()->all();
$cinema_ids = array_column($cinemas, 'id');
$cinemas = Cinema::find()->all();
$cinema_ids = array_column($cinemas, 'id');

Array-ի շրջանցում

array_map() ֆունկցիան թույլ է տալիս շրջանցել array-ի բոլոր տարրերը և կանչել return ֆունկցիա: Կարող եք փոխանցել ինչպես անանուն, այնպես էլ գոյություն ունեցող ֆունկցիայի անուն: Արդյունքում կստանաք փոխարկված արժեքներով array.

$cities = ['Berlin', 'KYIV', 'Amsterdam', 'Riga'];
$aliases = array_map('strtolower', $cities);
print_r($aliases);
$cities = ['Berlin', 'KYIV', 'Amsterdam', 'Riga'];
$aliases = array_map('strtolower', $cities);
print_r($aliases);

Կա թյուր կարծիք, որ դուք միաժամանակ չեք կարող փոխանցել ինչպես key-երը, այնպես էլ value-ները return-ի ֆունկցիային: Սա ճիշտ չէ.

$numbers = [1, -2, 3, -4, 5];
$squares = array_map(function ($number) {
    return $number ** 2;
}, $numbers);
print_r($squares);
$numbers = [1, -2, 3, -4, 5];
$squares = array_map(function ($number) {
    return $number ** 2;
}, $numbers);
print_r($squares);

Եկեք օգտագործենք array_walk() ֆունկցիան: Այն նման է array_map()-ին, բայց մի փոքր այլ կերպ է աշխատում: Նախ, տվյալները փոխանցվում են հղումով, որի արդյունքում array_walk()-ը վերամշակում է նախկին array-ը, այլ ոչ թե նորն է ստեղծում: Այսպիսով, մենք կարող ենք հղումով փոխանցել սկզբնական array-ի key-երն ու value-ները.

$model = ['id' => 7, 'name' => 'James'];
$callback = function ($key, $value) {
    return "$key is $value";
};
$res = array_map($callback, array_keys($model), $model);
print_r($res);
$model = ['id' => 7, 'name' => 'James'];
$callback = function ($key, $value) {
    return "$key is $value";
};
$res = array_map($callback, array_keys($model), $model);
print_r($res);

Array-ների միացում

array_merge() ֆունկցիան մի քանի array-ների համատեղման ամենապարզ միջոցն է: Բոլոր տվյալները կմիավորվեն միասին, կրկնօրինակները կվերագրանցվեն.

$fruits = [
    'banana' => 'yellow',
    'apple' => 'green',
    'orange' => 'orange',
];
array_walk($fruits, function (&$value, $key) {
    $value = "$key is $value";
});
print_r($fruits);
$fruits = [
    'banana' => 'yellow',
    'apple' => 'green',
    'orange' => 'orange',
];
array_walk($fruits, function (&$value, $key) {
    $value = "$key is $value";
});
print_r($fruits);

Մի array-ի արժեքները մեկ այլ array-ից դուրս բերելու համար օգտագործեք array_diff() ֆունկցիան: Հակադարձ գործողությունն իրականացվում է array_intersect() ֆունկցիայով.

$array1 = ['a' => 'a', 'b' => 'b', 'c' => 'c'];
$array2 = ['a' => 'A', 'b' => 'B', 'D' => 'D'];
$merge = array_merge($array1, $array2);
print_r($merge);
$array1 = ['a' => 'a', 'b' => 'b', 'c' => 'c'];
$array2 = ['a' => 'A', 'b' => 'B', 'D' => 'D'];
$merge = array_merge($array1, $array2);
print_r($merge);

Մաթեմատիկական գործողություններ

array_sum() ֆունկցիան կարող է օգտագործվել array-ի տարրերի գումարը հաշվելու համար: array_product()-ը` բազմապատկելու համար: array_reduce() թույլ կտա ձեզ կիրառել ձեր սեփական բանաձևը.

$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$diff = array_diff($array1, $array2);
print_r($diff);
$intersect = array_intersect($array1, $array2);
print_r($intersect);
$array1 = [1, 2, 3, 4];
$array2 = [3, 4, 5, 6];
$diff = array_diff($array1, $array2);
print_r($diff);
$intersect = array_intersect($array1, $array2);
print_r($intersect);

array_count_values() կօգնի ձեզ հաշվել array-ի բոլոր unique արժեքների քանակը.

$numbers = [1, 2, 3, 4, 5];
echo(array_sum($numbers)); // 15
echo(array_product($numbers)); // 120
echo(array_reduce($numbers, function ($carry, $item) {
    return $carry ? $carry / $item : 1;
}));
$numbers = [1, 2, 3, 4, 5];
echo(array_sum($numbers)); // 15
echo(array_product($numbers)); // 120
echo(array_reduce($numbers, function ($carry, $item) {
    return $carry ? $carry / $item : 1;
}));

Array-ների գեներացիա

Տրված թվով տարրերով array կազմելու և նրանց մեկ արժեք սահմանելու համար օգտագործեք array_fill() ֆունկցիան.

$things = ['apple', 'apple', 'banana', 'tree', 'tree', 'tree'];
$values = array_count_values($things);
print_r($values);
$things = ['apple', 'apple', 'banana', 'tree', 'tree', 'tree'];
$values = array_count_values($things);
print_r($values);

Որպեսզի ստանանք array, որի տարրերը պետք է տարբեր լինեն ժամերի կամ տառերի միջակայքում, օգտագործում ենք range() ֆունկցիան.

$bind = array_fill(0, 5, '?');
print_r($bind);
$bind = array_fill(0, 5, '?');
print_r($bind);

Array-ը կտրելու համար – օրինակ՝ առաջին երեք տարրերը ստանալու համար – պարզապես օգտագործեք array_slice() ֆունկցիան.

$letters = range('a', 'z');
print_r($letters);
$hours = range(0, 23);
print_r($hours);
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$top = array_slice($numbers, 0, 3);
print_r($top);
$letters = range('a', 'z');
print_r($letters);
$hours = range(0, 23);
print_r($hours);
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$top = array_slice($numbers, 0, 3);
print_r($top);

Array-ների հետ պրոֆեսիոնալ աշխատանք

Հիանալի բաները սկսում են ստացվել, երբ մենք համատեղում ենք վերը նշված մի քանի ֆունկցիաներ:
Օրինակ, մենք կարող ենք array-ից հեռացնել բոլոր դատարկ արժեքները` օգտագործելով array_filter() և array_map() ֆունկցիաները.

$values = ['say  ', '  bye', ' ', ' to', ' spaces ', '   '];
$words = array_filter(array_map('trim', $values));
print_r($words);
$values = ['say  ', '  bye', ' ', ' to', ' spaces ', '   '];
$words = array_filter(array_map('trim', $values));
print_r($words);

Մոդելային օբյեկտների ցուցիչները և անունները ստանալու համար պարզապես օգտագործում ենք array_combine() և array_column() ֆունկցիաները.

$models = [$model1, $model2, $model3];
$id_to_title = array_combine(
    array_column($models, 'id'),
    array_column($models, 'title')
);
$models = [$model1, $model2, $model3];
$id_to_title = array_combine(
    array_column($models, 'id'),
    array_column($models, 'title')
);

Որպեսզի գտնենք array-ի երեք ամենաշատ օգտագործված տարրերը, կարող ենք օգտվել array_count_values(), arsort() և array_slice() ֆունկցիաներից.

$letters = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd', 'd', 'd'];
$values = array_count_values($letters);
arsort($values);
$top = array_slice($values, 0, 3);
print_r($top);
$letters = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd', 'd', 'd'];
$values = array_count_values($letters);
arsort($values);
$top = array_slice($values, 0, 3);
print_r($top);

array_sum() և array_map() ֆունկցիաների համադրությունը հնարավորություն կտա հաշվելու զամբյուղի մեջ տարրերի քանակը.

$order = [
    ['product_id' => 1, 'price' => 99, 'count' => 1],
    ['product_id' => 2, 'price' => 50, 'count' => 2],
    ['product_id' => 2, 'price' => 17, 'count' => 3],
];
$order = [
    ['product_id' => 1, 'price' => 99, 'count' => 1],
    ['product_id' => 2, 'price' => 50, 'count' => 2],
    ['product_id' => 2, 'price' => 17, 'count' => 3],
];
$sum = array_sum(array_map(function ($product_row) {
    return $product_row['price'] * $product_row['count'];
}, $order));
print_r($sum);
$sum = array_sum(array_map(function ($product_row) {
    return $product_row['price'] * $product_row['count'];
}, $order));
print_r($sum);

Այս նյութը ևս մեկ ապացույց է, որ պարզագույն ֆունկցիաների իմացությունը կօգնի ձեր կոդն ավելի հակիրճ և ընթերցելի դարձնել: Իհարկե, սա PHP-ի array-ների հետ աշխատելու ֆունկցիաների ամբողջ ցանկը չէ: Ավելի շատ հնարավորություններ են բացվում հատուկ պարամետրերի և const-ների օգտագործման դեպքում: Այստեղ մենք նկարագրել ենք այն հիմնական ֆունկցիաները, որոնց մասին պետք է իմանա յուրաքանչյուր PHP ծրագրավորող:

Ներբեռնել

PHP Arrays Code-ի ամբողջական ֆայլերը ներբեռնելու համար. Download