В повседневной работе 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']
Да, количество обходов зависит от самого длинного массива.
После трёх прохождений $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 = [
['name' => 'a'],
['name' => 'b'],
['name' => '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 < граф($arr); ++$i) {
$arr[$i] = $arr[$i] . «_i»;
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Не рекомендуется. Это не так эффективно, как предок. А способ написания чуть более громоздкий, чем «предварительный».
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'];
|