В прошлом уроке я рассказал об элементарных операциях над массивом. Очень часто нужно провести операцию над каждым элементом массива.
Самое простое - это перебрать массив. Для этого используется оператор foreach.
Если говорить схематично - то представьте себе пружину. Если следовать за её витками - то вы пройдёте её целиком. Перебор массива выглядит примерно так-же.
И количество витков - это количество элементов массива
Источник
Предположим у нас есть 4 человека, которые положили деньги в банк под проценты и нам нужно посчитать сколько они в итоге получат.
Опишем это в виде неассоциативного многомерного массива. Ассоциативность тут ни к чему, а многомерность достигается за счёт того, что каждый элемент массива тоже является массивом.
Исходные данные:
<?php
$peoples = array();
$peoples[] = array('name' => 'Tom', 'money' => 100, 'percent' => 12);
$peoples[] = array('name' => 'Jon', 'money' => 85, 'percent' => 15);
$peoples[] = array('name' => 'Leo', 'money' => 163, 'percent' => 11);
$peoples[] = array('name' => 'Bob', 'money' => 17, 'percent' => 80);
?>
Теперь будем перебирать массив так:
<?php
foreach ($peoples as $i => $person) {
//внутри цикла в переменной $i будет ключ массива, в нашем случае это 0, 1, 2 и 3
//в переменной $person будет массив из имени, сумы и процента
//к текущей сумме прибавляем процент от этой суммы
$new_money = $person['money'] + ($person['money'] / 100 * $person['percent']);
//сразу выводим на экран
echo $person['name'] . ' new sum = ' . $new_money . '<br />';
}
?>
Выведет на экран:
Tom new sum = 112
Jon new sum = 97.75
Leo new sum = 180.93
Bob new sum = 30.6
Переменная $i внутри цикла необязательна. Если вам неважен ключ - можете её не писать.
<?php
foreach ($peoples as $person) {
echo $person['name'] . '<br />';
}
?>
@mir Да, уже читал его посты о ботах.
Было бы здорово, если бы ты сделал больше по размеру пост, со ссылками на дополнительные источники, который бы рассказывал о конкретной, законченной теме.
Я наоборот стараюсь быть кратким. А то в программировании можно начать со строк, а закончить сериализацией. Ок, в следующий раз постараюсь шире вопрос освящать, но портянку на 5 экранов не буду делать, в технических статьях это будет просто вода.
Из ссылок - разве что на официальную документацию могу ссылаться, остальное из головы пишу)
Спасибо за обратную связь)))
Объем не ради объема, а ради законченности образовательного материала. Учесть нюансы, рассказать о смежных темах, дать ссылки на дополнительные материалы (например на хабре -- нужно поискать, если нету под рукой). Возможно, описать тему с другой перспективы.
К примеру, тема поста у тебя для новичков, но ты не рассказываешь что такое ассоциативный/неассоциативный массив.
Понял.
По поводу ассоциативности - в прошлом уроке об этом говорил, поэтому не повторяюсь.
@ontofractal стоит слушать - плохого не посоветует... а в тема коде он - крут... (говорю, как человек ничего не кодившего, но видевший результы)
Кстати.. на него можно подписаться)