Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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) {
    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'];





Предыдущий:[Практическая битва] Упаковка ASP.NET ядер в выпуск тайм-аута изображения NUGET
Следующий:Расширения для массовой загрузки изображений Kindeditor Editor (без зависимости от Flash)
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com