Массивы и рулетка

Сделал предыдущие задачи?

Тогда ты готов к чуть более сложной теории. Сейчас я тебе расскажу про переменные-массивы. К сожалению, без них никак-никак не обойтись. Посмотри объяснения на картинке — не бойся, все сразу понимать не нужно, просто попробуй прочесть.

Если прочел — переходи к задачам. Не бойся, они гораздо проще, чем теория.

Повторим

Создать пустой или уже заполненный массив

$a = array(); /* Пустой массив */
$a = []; /* В PHP5.4 и старше вместо array() можно писать [] */

/* Массив, содержащий три строки с индексами 0, 1 и 2 */
$cars = ['Ford', 'Toyota', 'Tesla']; 

/* Массив, содержащий 2 элемента c вручную указанными индексами */
$score = ['Ivan' => 100, 'Petr' => 400];

/* Массив, содержащий элементы с индексами 1, 2, 3, 10, 11 */
$x = [1 => 'a', 'b', 'c', 10 => 'd', 'e'];

Вывести массив или значение элемента массива

var_dump($cars); /* выводит все */
echo "Иван набрал {$score['Ivan']} очков\n"; 

Добавить в массив новый элемент

/* Индекс будет поставлен автоматически (в данном случае 3) */
$cars[] = 'Mersedes'; 

/* Индекс нового элемента указан явно */
$score['Vasiliy'] = 500; 

Поменять значение элемента под индексом

$score['Ivan'] = 200;

Удалить элемент, зная его индекс

unset($score['Ivan']);

Обойти все элементы массива циклом

foreach ($score as $name => $number) {
    echo "$name набрал $number очков\n";
}

/* Если нам нужны только значения без индексов */
foreach ($cars as $car) {
    echo "$car\n";
}

Проверить, есть ли в массиве элемент с значением или индексом

/* по значению */
if (in_array('Toyota', $cars)) {
    echo "В массиве есть значение 'Toyota'\n";
}

/* по индексу */
if (array_key_exists('Ivan', $score)) {
    echo "Есть элемент с индексом Ivan\n";
}
if (isset($score['Ivan'])) {
    echo "Есть элемент с индексом Ivan и значение элемента не равно null\n";
}

Ссылки на мануал:

Задача про оценки

Итак, решим задачку:

Некто зарегистрировался в социальной сети, и там его фото поставили оценки (см. на картинке). Надо найти и вывести средний балл.

5.3 Возьми код по ссылке http://codepad.org/DBfuBotM и исправь его, чтобы он показывал правильный ответ.

Подсказка: чтобы узнать средний балл, надо сумму баллов поделить на их количество. Сумму значений можно посчитать через array_sum(), количество через count()

Что-то непонятно? Перечитай теорию, открой мануал, погугли.

Задачка про рост

5.4 Дан рост школьника и рост его одноклассников. Надо найти, сколько человек в классе выше, чем наш герой.

Для этого возьми код по ссылке http://codepad.org/UOaOEgAW и переделай его, чтобы считать сколько человек выше школьника.

Что-то непонятно? Перечитай теорию, открой мануал, погугли. Подсказка: заведи переменную, положи в нее 0, каждый раз, когда видишь высокого школьника, увеличивай на 1.

Ответ на любой вопрос это же google!

5.5 Давай сделаем программу, отвечающую на любой вопрос. Для этого создадим массив с возможными вариантами ответов, сгенерируем случайное число и возьмем из массива элемент с таким номером.

Подсказка: здесь тебе могла бы помочь функция array_rand()

Генератор имен

Еще одна задача.

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

Код: http://codepad.org/mjuhN3fg или http://ideone.com/6RqNUq

Для этого мы сделаем массив со слогами и несколько раз выберем из него случайный элемент. Эти элементы мы собираем по кусочкам в переменную $name и в конце выводим. Может, тебе пригодится функция array_rand(), которая выбирает случайный индекс из массива.

Собрать одну большую строку (имя) из кусочков (слогов) можно несколькими способами:

  1. Создать переменную и положить в нее пустую строку ($string = '';). Затем на каждом шаге цикла «приклеивать» к ней новый кусочек: $string = $string . $piece; или $string .= $piece; Точка — это оператор, склеивающий («конкатенирующий») 2 строки вместе. Оператор .= надо писать слитно, без пробела.
  2. Создать переменную, поместить в нее пустой массив. На каждом шаге добавлять в массив новый слог. В конце склеить слоги в массиве в одну строку с помощью implode.

Что-то непонятно? Перечитай теорию, мануал, погугли.

Сделал? Ты у мамы молодец, переходи к следующему уроку.

-----

Куда вводить код? Что надо скачать? Читай первый урок.

Есть вопросы? Задай гуглу или автору.

Нравится урок? Лайкай, репости, приглашай друзей, пости котов и Канако, шли добра, решай задачи, помогай новичкам! Кнопок для лайка нет, кто хочет зарепостить, всегда может сделать это ручками.

Как связаться с автором? Я хочу переодеть его в платье школьницы и жениться на нем. Ящик codedokode (кот) gmail.com ждет ваших писем. А вконтактик и фейсбучек ждут ваших лайков. Но ответ на банальные вопросы лучше искать в Гугле или на stackoverflow.

Я решил задачку!!! Молодец, делай следующий урок

Ideone не работает!11 Ну так открой Гугл и найди сайты вроде https://repl.it/languages/php , http://phptester.net/ , http://sandbox.onlinephpfunctions.com/ , http://codepad.org/ или http://www.runphponline.com/ . Не ленись.

Почему так много рекламы? Всю рекламу на сайте ставит юкоз (бесплатный хостинг же), а не я.

На сайте установлена система Google Analytics (и еще несколько аналогичных систем от юкоза). Данные о твоем IP-адресе, посещаемых страницах, времени посещения отправляются в Google Corporation, США. Хочу знать, кто и зачем сюда заходит. Поверь, другие сайты делают точно так же. Все сайты пишут логи.