Материал: Web-дизайн. лабораторный практикум. Суворов А.П., Проценко В.Н

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Использование инструкции include имеет недостатки. Так, мы можем в разных местах кода неумышленно подключить один и тот же файл, что при выполнении кода вызовет ошибки.

Чтобы исключить повторное подключение файла, вместо инструкции include надо применять инструкцию include_once

<?php

include_once "factorial.php";

$a = 5;

$fact = getFactorial($a);

echo "Факториал числа $a равен $fact"; ?>

И теперь, если мы подключим этот же файл с помощью include_once еще гденибудь ниже, то это подключение будет проигнорировано, так как файл уже подключен в программу.

Инструкции require и require_once

Действие инструкции require подобно инструкции include: она также подключает внешний файл, вставляя в программу его содержимое. Только теперь, если данный файл не будет найден, действие программы прекратится:

<?php

require "factorial.php"; ?>

И также если у нас в коде встретятся несколько инструкций require, которые подключают один и тот же файл, то интерпретатор выдаст ошибку. И также чтобы избежать данной ситуации, надо использовать инструкцию require_once:

<?php

require_once "factorial.php"; ?>

1.7.12.Массивы

Массивы предназначены для хранения наборов данных или элементов. Каждый элемент в массиве имеет свой уникальный ключ и значение. Итак, сохраним в массив список моделей телефонов:

<?php

$phones[0] = "Nokia N9";

90

$phones[1] = "Samsung Galaxy ACE II"; $phones[2] = "Sony Xperia Z3"; $phones[3] = "Samsung Galaxy III";

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

Здесь создается массив $phones из четырех элементов. Каждый элемент в массиве представляет собой пару ключ - значение. Так, первый элемент $phones[0] = "Nokia N9" имеет ключ - число 0, а значение - строку "Nokia N9". В таких массивах числовые ключи еще называются индексами.

С помощью функции count() можно узнать количество элементов в массиве. А благодаря тому, что ключи идут по порядку от 0 до 3, и зная размер массива, можно вывести элементы массивы в цикле for.

Чтобы было более понятно отношения ключей и значений элементов, выведем массив с помощью функции print_r:

print_r($phones);

У нас получится следующий вывод:

Array ( [0] => Nokia N9 [1] => Samsung Galaxy ACE II [2] => Sony Xperia Z3 [3] => Samsung

Galaxy III)

Данное создание массива будет также эквивалентно следующему:

<?php

$phones[] = "Nokia N9";

$phones[] = "Samsung Galaxy ACE II"; $phones[] = "Sony Xperia Z3"; $phones[] = "Samsung Galaxy III"; $num = count($phones); for($i=0;$i<$num;$i++)

echo "$phones[$i] <br />"; ?>

Если не указывается ключ элемента, то PHP в качестве ключей использует числа. При этом нумерация ключей начинается с нуля, а каждый новый ключ увеличивается на единицу.

Зная ключ элемента в массиве, мы можем обратиться к этому элементу, получить или изменить его значение:

// получим элемент по ключу 1 $myPhone = $phones[1];

echo "$myPhone <br />";

91

// присвоение нового значения $phones[1] = "Samsung X650"; echo "$phones[1] <br />";

Но в качестве ключей могут использоваться не только целые числа, но и строки:

<?php

$phones["nokia"] = "Nokia N9"; $phones["samsumg"] = "Samsung Galaxy III"; $phones["sony"] = "Sony Xperia Z3"; $phones["apple"] = "iPhone5";

echo $phones["samsumg"]; ?>

Подобные массивы еще называют ассоциативными. Оператор array

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

<?php

$phones = array('iPhone', 'Samsung Galaxy S III', 'Nokia N9', 'Sony XPeria Z3'); echo $phones[1];

?>

Оператор array() принимает набор элементов. Здесь также явным образом не указаны ключи. Поэтому PHP автоматически нумерует элементы с нуля. Но мы также можем указать для каждого элемента ключ:

<?php

$phones = array("apple"=>"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3");

echo $phones["samsumg"]; ?>

Операция => позволяет сопоставить ключ с определенным значением. Перебор ассоциативных массивов

Выше мы посмотрели, как с помощью цикла for вывести все элементы массива, где ключи заданы последовательно числами от 0 до 3. Однако с ассоциативными массивами это не работает. И для них в PHP предназначен специальный тип цикла - foreach...as:

<?php

$phones = array("apple"=>"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9",

92

"sony" => "Sony XPeria Z3"); foreach($phones as $item)

echo "$item <br />"; ?>

В цикле foreach из массива последовательно извлекаются все элементы и их значение помещается в переменную, указанную после ключевого слова as. В данном случае в переменную $item по очереди помещаются все четыре значения из массива $phones. Когда будет извлечен последний элемент из массива, цикл завершается.

Цикл foreach позволяет извлекать не только значения, но и ключи элементов:

<?php

$phones = array("apple"=>"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9",

"sony" => "Sony XPeria Z3"); foreach($phones as $key=>$value) echo "$key => $value <br />";

?>

Здесь при переборе элементов цикла в переменную $key будет передаваться ключ элемента, а в переменную $value ее значение.

Альтернативу циклу foreach представляет использование функций list и each:

<?php

$phones = array("apple"=>"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9",

"sony" => "Sony XPeria Z3"); while (list($key, $value) = each($phones)) echo "$key => $value <br />";

?>

Цикл while будет работать, пока функция each не вернет значение false. Функция each проходит по всем элементам массива $phones и получает его в виде массива, в который входят ключ и значение элемента. Затем этот массив передается функции list и проиcходит присваивает значения массива переменным внутри скобок. Когда функция each закончит перебор элементов массива $phones, она возвратит false, и действие цикла while будет завершено.

Многомерные массивы В предыдущих примерах рассматривались только одномерные массивы, где

значения элементов представляли числа, строки. Но в PHP массивы могут

93

также быть многомерными, то есть такими, где элемент массива сам является массивом. Например, создадим многомерный массив:

<?php $phones = array(

"apple"=> array("iPhone5", "iPhone5s", "iPhone6") , "samsumg"=>array("Samsung Galaxy III", "Samsung Galaxy ACE II"), "nokia" => array("Nokia N9", "Nokia Lumia 930"),

"sony" => array("Sony XPeria Z3", "Xperia Z3 Dual", "Xperia T2 Ultra")); foreach ($phones as $brand => $items)

{

echo "<h3>$brand</h3>"; echo "<ul>";

foreach ($items as $key => $value)

{

echo "<li>$value</li>";

}

echo "</ul>";

}

?>

И при выводе мы получим 4 списка:

94

Источник: https://studfile.net/preview/16568571/