У щоденних операціях 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'];
|