<MyRusakov.ru />

Создание Интернет-магазина на PHP и MySQL

Создание Интернет-магазина на PHP и MySQL

Видеокурс "Создание Интернет-магазина на PHP и MySQL" - это уникальный курс по созданию Интернет-магазина с нуля. Особенностью данного курса является то, что создание идёт с самого начала, то есть от идеи. Далее создаётся дизайн всех необходимых страниц, после делается их вёрстка. Затем создаётся движок на PHP и MySQL, после делается Admin-панель и, наконец, готовый сайт размещается в Интернете.

Адрес созданного в этом курсе сайта: http://storedvd.ru

Всё создание сайта будет происходить на Ваших глазах, поэтому Вы легко сможете повторить весь процесс создания сложного функционального сайта уже при разработке своего портала.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Создание и перебор массивов в PHP

Создание и перебор массивов в PHP

Пришло время разобраться с ещё одним типом переменных в PHP - массивами. Массив - это тип переменной, который может содержать множество значений, причём даже разных типов. И этой статье мы поговорим о создании и переборе массивов в PHP.

Создать массив в PHP очень просто:

<?php
  $arr = array(15, 14, true, "ds", -0.5);
  echo $arr[0]."<br />";
  echo $arr[3];
?>

Здесь мы создали массив, в котором находится пять значений. Обратите внимание, что типы переменных различны. На следующих двух строках мы выводим два элемента из этого массива. Очень важно: нумерация начинается с 0! То есть первый элемент имеет индекс 0, второй - 1 и так далее.

На самом деле, в предыдущем примере мы создавали не массив, а, скорее, список. Список - это тот же массив, но с числовыми индексами, идущими по порядку (то есть 0, 1, 2, 3 и так далее). А теперь создадим именно массив (его ещё называют ассоциативный массив):

<?php
  $arr = array("Name" => "Tom", "Age" => 14);
  echo $arr["Name"]."<br />";
  echo $arr["Age"];
?>

Здесь мы создали массив не с числовым индексом, а с так называемыми ключами. Ключами в массиве являются: "Name" и "Age". У каждого ключа имеется значение "Tom" и 14 соответственно. Думаю, здесь вопросов не возникает.

А теперь разберём перебор массива. Первый массив (который список) перебирается элементарно:

<?php
  for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i]."<br />";
?>

Здесь просто идёт цикл for от 0 до длины массива и при каждой итерации выводится элемент массива.

А как же быть с ассоциативными массивами, ведь там индексы не числовые, как их перебирать? Для этого существует цикл foreach, который перебирает массив по ключам:

<?php
  foreach ($arr as $k=>$v)
    echo "$k - $v<br />";
?>

Думаю, что синтаксис понятен: $k - это ключ, а $v - соответствующее значение, и в этом массиве поочерёдно перебираются все пары в массиве, а потом выводятся. Разумеется, с помощью foreach можно также перебирать и списки.

В этой статье мы с Вами разобрали создание списков и массивов, а также я показал Вам как делать перебор всех значений, используя классическую конструкцию for и очень полезную и простую конструкцию foreach.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (22):

SSBugs SSBugs 19.09.2011 00:02:11

Здравствуйте, Михаил, хочу поинтересоваться у Вас по поводу перебора следующего массива списка: for ($i=0;$i<=5;$i++) или for ($i=0; $i<count($arr); $i++). Есть ли существенная разница кроме как что в первом случае необходимо подсчитывать элементы списка, а во втором достаточно вписать только ограничитель массива? Первый вариант более компактный.

Ответить

Admin Admin 19.09.2011 00:32:12

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

Ответить

artkhvz artkhvz 01.05.2012 18:05:44

хочу вывести к примеру слово привет 10 раз.. скажите, вот так можно делать?? $str = 'привет'; for ($i=1; $i<=10; $i++){ echo $str.'<br>'; }

Ответить

Admin Admin 01.05.2012 20:55:16

Если это работает, то, да, можно.

Ответить

kashirinav kashirinav 15.06.2012 14:06:31

Михаил, добрый день! Подскажите, пожалуйста, как можно вытащить максимальный элемент из массива, чтобы показать не только сам элемент, но и его номер? У меня два массива (строки), выполняю деление элементов одного на элементы другого и ввожу результаты в третий массив. Теперь нужно выбрать максимальный и показать его значение и порядковый номер. Попробовал след. алгоритм: for ($i = 0; $i < count($indicator1); $i++) for ($i = 0; $i < count($hum1); $i++) $maxarr[$i]=$indicator1[$i]/$hum1[$i]."<br/>";// делим индикатор на численность $max=0; $sz=sizeof($maxarr); for($i=0;$i<$sz;$i++) if($maxarr[$i] > $max) $max=$maxarr[$i]; $maxI=$i; echo $max; echo $maxI; Выводится только показатель, а его порядковый номер нет. Спасибо! Михаил, и еще один вопрос. Подскажите, как вывести элементы массива, чтобы их порядковые номера начинались с 1. Т.е. arr[0] выводился бы на экран как первый элемент. Спасибо!

Ответить

Admin Admin 15.06.2012 15:02:55

if($maxarr[$i] > $max) $max=$maxarr[$i]; $maxI=$i; - фигурных скобок не хватает, 2 же оператора. На второй вопрос ответ - по-хорошему никак, и это правильно, поскольку гораздо удобнее нумерация с 0. Если же нужно с 1, то и инициализируйте постоянно массивы с 1 (вручную), и все циклы также с 1 начинайте, а не с 0.

Ответить

kashirinav kashirinav 18.06.2012 14:01:48

Михаил, спасибо! Вроде все получилось! Внимательность, и еще раз внимательность! По второму вопросу: что означает инициализировать постоянно вручную? Не совсем понял. Как его объявлять и присваивать данные? Спасибо!

Ответить

Admin Admin 18.06.2012 17:18:00

Это значит, что указывать индекс постоянно. $array[] - вот так не получится, поэтому нужно указывать в первый раз $array[1], а уже потом можно и $array[].

Ответить

kashirinav kashirinav 19.06.2012 18:17:42

Михаил, добрый день! Спасибо за ответ. Скажите, как подсчитать сумму элементов массива? Нашел функцию sum_array, но почему то не работает. Спасибо!

Ответить

Admin Admin 19.06.2012 18:24:11

Сумму элементов массива Вы должны сами научиться считать. Это простейшая задача, смысла делать что-то ещё нет, пока Вы её не решите. Поэтому подумайте сами.

Ответить

kashirinav kashirinav 20.06.2012 11:48:58

Согласен с вами полностью! Задача начального уровня (куда я и отношусь) Я решил ее следующим образом: $sum = $sum + $hum3[i]; вложил в цикл for. Но мне интересна именно отдельная функция. Это же легче. Не надо вводить переменную. Сразу выводишь на печать. Существует ли такая функция? Спасибо!

Ответить

Admin Admin 20.06.2012 11:52:56

array_sum() - функция, возвращающая сумму элементов массива.

Ответить

kashirinav kashirinav 20.06.2012 12:42:17

Михаил, спасибо! Еще немножко помучаю вас :)! Скажите, существуют ли в php готовые функции например расчета коэффициента корреляции или необходимо писать алгоритм? Я пока баклажан в php, но не хотелось бы изобретать велосипед.

Ответить

Admin Admin 20.06.2012 12:46:19

Таких функций точно нет, это не Statistica и даже не Matlab. Поэтому нужно писать это самому.

Ответить

malina95 malina95 06.05.2013 23:45:12

Миш, очень прошу помоги... Есть массив: $element = array( 'banana.png' => 'Банан', 'kiwi.png' => 'Киви', 'apricot.png' => 'Абрикос', 'lemon.png' => 'Лимон', 'mango.png' => 'Манго', 'peach.png' => 'Персик', 'strawberry.png' => 'Клубнику', 'cherry.png' => 'Вишню', 'orange.png' => 'Апельсин', 'pear.png' => 'Грушу', ); Нужно выбрать 4 случайных элемента: $elements = array_rand($element, 4); но мне нужно сохранить значение ключа, делаю так но не выходит : foreach ($elements as $key => $value) { foreach ($element as $key1 => $value1) { $elements[$key1] = $value; } } print_r($elements); Помоги, очень прошу...

Ответить

Admin Admin 07.05.2013 12:06:07

Используйте функцию array_rand().

Ответить

malina95 malina95 07.05.2013 16:06:34

Я ее и так использую, для выбора 4 случайных элементов, она очищает ключи, а мне нужно сохранить элементы в первоначальном состоянии. Как мне быть в такой ситуации?

Ответить

Admin Admin 07.05.2013 21:30:23

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

Ответить

Avery Avery 25.07.2013 10:47:18

Здравствуйте, Михаил. Есть ассоциативный массив, полученный из ini файла. Как можно сравнить значение ключей с переменной, используя цикл и при совпадение выйти из цикла?

Ответить

Admin Admin 25.07.2013 17:35:03

Всё как в этой статье. Просто сравниваете через условный оператор, и выходите из цикла через break в случае совпадения.

Ответить

Adrenalin Adrenalin 27.12.2015 00:41:37

Я правильно понял? Если в выборке из базы - $myrow[title] больше одной строки, то это уже "многомерный массив"? Тогда вопрос звучит так: как в многомерном массиве ($myrow2[title]) удалить записи (строки), которые уже есть в первом многомерном массиве ($myrow[title])? Или как вывести на экран все записи первого массива и записи со второго массива, которых нет в первом?

Ответить

Ivan20142014 Ivan20142014 21.11.2016 20:31:33

Доброго времени суток Михаил! Помогите пожалуйста с массивом $x = array("один","два","три"); function getout($t) { if ($t == "один") return 1; elseif ($t == "два") return 2; elseif ($t == "три") return 3; } for ($i = 0; $i < 100; $i++ ) { $g[] = ($i * getout($x[$i % 3])); } print_r ($g); объясните пожалуйста вот эту строку $g[] = ($i * getout($x[$i % 3])); как она работает, что конкретно перемножается?

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.