Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 2908|Відповідь: 0

Пост новачків: PHP підсумовує 6 способів проходження масивів

[Копіювати посилання]
Опубліковано 08.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) {
    Повернути $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); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];


4、for
Це має бути дуже загальний синтаксис
$arr = ['a', 'b', 'c'];
для ($i = 0; $i < count($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 Тайм-аут
Наступний:Розширення Kindeditor Editor Editor для масового завантаження зображень (без залежності від Flash)
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com