Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 2908|Отговор: 0

Публикация за новодошли, PHP обобщава 6 начина за преминаване през масиви

[Копирай линк]
Публикувано в 8.06.2022 г. 15:56:10 ч. | | |


В ежедневните операции на PHP, масивите са най-често срещаната структура и почти всеки ден се занимаваме със съдържание, свързано с масиви. Така че въпросът е, как се преминава и обработва масиви като цяло.


1、foreach
Познато е, не е ли любимото ти?
$arr = ['a', 'b', 'c'];
foreach ($arr като $key => $value) {
    $arr[$key] = $value . "_i";
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


2、array_map
Използвайте анонимни функции за обработка на всеки елемент в масива. Нов масив се връща, когато преминаването е завършено
$arr = ['a', 'b', 'c'];
$arr = array_map(функция ($item) {
    Върни $item. "_i";
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Можеш да работиш с няколко масива едновременно
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['ти', 'добър', 'е', 'оригинален', 'грях'];
$arr_n = [...];
$arr = array_map(функция ($item_1, $item_2) {
    return $item_1 . '_' . $item_2 . "_i";
}, $arr_1, $arr_2);
print_r($arr); ['a_ you _i', 'b_ is good_i', 'Are you c__i', '_original _i', '_sin_i']
Да, броят на преминаванията се базира на най-дългия масив.
След преминаване 3 пъти, $arr_1 всъщност се завършва, така че стойностите на $item_1 са нулови след това


3、array_walk
Преминаването на вашия масив като референтен пропуск няма стойност за връщане и може да обработва само един масив.
$arr = ['a', 'b', 'c'];
array_walk($arr, функция (&$item) {
    $item = $item . "_i";
});


print_r($arr); ['a_i', 'b_i', 'c_i'];
Обърнете внимание и $item, да, има допълнително &, което означава, че вашият параметър получава данни по референция. Всичко, което трябва да направите, е да намерите начин да промените този параметър.


Ако работиш с двумерни масиви, методът на обработка също е неразделен.
$arr = [
    ['име' => 'a'],
    ['име' => 'b'],
    ['име' => 'c']
];
array_walk($arr, функция (&$item) {
    $item['name'] = $item['name'] . "_i";
});
print_r($arr); [['име' => 'a_i'], ['име' => 'b_i'], ['име' => 'c_i']];


4、for
Това трябва да е супер общ синтаксис
$arr = ['a', 'b', 'c'];
за ($i = 0; $i < граф($arr); ++$i) {
    $arr[$i] = $arr[$i] . "_i";
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Не се препоръчва. Не е толкова ефективно, колкото Foreach. А методът на писане е малко по-тромав от предварителното.


5、всеки
Хаха, тази функция е изоставена в PHP7.2 @deprecated и се усеща особено старомодна. Ефективността на изпълнение на този метод също не е добра и начинаещите трябва да се откажат директно.
$arr = ['a', 'b', 'c'];
докато (list($key, $value) = всеки($arr)) {
    $arr[$key] = $value . "_i";
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


6、reset
По-точно, това не е просто функция за нулиране, а и комбинация от множество вградени функции, които по същество не се използват за писане на код
$arr = ['a', 'b', 'c'];
reset() указател към главата, всъщност по подразбиране е да сочи към началото, можете да игнорирате това изречение
reset($arr);
current() за получаване на стойността на елемента на текущия указател
докато ($value = current($arr)) {
    key() за получаване на елементния индекс на текущия указател
    $arr[key($arr)] = $value . "_i";
    next() указател към следващия
    next($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];





Предишен:[Практическа битка] Опаковане на ASP.NET ядра в Image NUGET Timeout Issue
Следващ:Kindeditor Editor Масово качване на разширения за изображения (без зависимост от Flash)
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com