Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Перемешивание элементов в массиве shuffle()

Практическая работа № 2. Работа со строками в языке PHP. Дата и время.

1. Запустить программу Денвер из корневого каталога WebServers\denver

Задача: Загрузка файла на сервер

Решение: Необходимо создать HTML форму и PHP – сценарий для обработки файла.

2. Набрать следующий код:

<html>

<head>

<title> Загрузка файла на сервер в PHP </title>

</head>

<body>

<h2>Кнопка для загрузки файлов (browse)</h2>

<p>Служит для реализации загрузки файлов на сервер. Объект browse начинается с парных тегов <form></form>. Начинающий тэг <form> содержит необходимый атрибут encrypt. Атрибут encrypt принимает значение multipart/form-data, который извещает сервер о том, что вместе с обычной информацией посылается и файл. При создании текстового поля также необходимо указать тип файла – “ file ”.</p>

<FORM ENCTYPE="multipart/form-data" ACTION="action.php" METHOD=POST>
<INPUT NAME="myfile" TYPE="file">
<INPUT TYPE="submit" value="Передать файл">
</FORM>

<p>В данной html-форме присутствует элемент browse, который открывает диалоговое окно для выбора файла для загрузки на сервер. При нажатии на кнопку "Передать файл", файл передается сценарию-обработчику.<p>

</body>

</html>

  1. Сохранить с расширением phtml, затем из адресной строки браузера открыть и посмотреть.
  2. Создать файл с php-сценарием и сохранить под именем action.php. Перед написанием обработчика, необходимо определиться в какой каталог мы будет копировать файл:

<?php
if(isset($_FILES["myfile"])) // Если файл существует
{
$catalog = "../image/"; // Наш каталог
if (is_dir($catalog)) // Если такой каталог есть
{
$myfile = $_FILES["myfile"]["tmp_name"]; // Времменый файл
$myfile_name = $_FILES["myfile"]["name"]; // Имя файла
if(!copy($myfile, $catalog)) echo 'Ошибка при копировании файла '.$myfile_name // Если неудалось скопировать файл
}
else mkdir('../image/'); // Если такого каталога нет, то мы его создадим
}
?>

  1. В отдельном файле набрать следующий код, сохранить с соответствующим расширением и протестировать работу.
  2. Ряд функций, также позволяют возвращать массивы, например, функция file(), которая читает файл и возвращает его содержимое в виде массива. Каждый элемент массива соответствует одной строке.

$arr = file("text.txt");
for($i = 0; $i < count($arr); $i++)
{
echo $arr[$i]."
";
}
?>

  1. Другой полезной функцией является функция explode(), которая позволяет разбить строку на несколько фрагментов, каждый из которых помещается в отдельный элемент массива:

$str = "345|[email protected]|http://php.at.ua|login|password";
$arr = explode("|",$str);
for($i = 0; $i < count($arr); $i++)
{
echo $arr[$i]."<br>\n
";
}
?>

  1. Результат работы скрипта может выглядеть следующим образом:

345
[email protected]
http://php.at.ua
login
password

  1. Существует и обратная функция — implode(), которая объединяет, элементы массива в строку, используя для этого заданный разделитель:

$arr[0] = "345";
$arr[1] = "[email protected]";
$arr[2] = "http://php.at.ua";
$arr[3] = "login";
$arr[4] = "password";
$str = implode("##",$arr);
echo $str; //345##[email protected]##http://php.at.ua##login##password
?>

  1. Удалить отдельный элемент массива можно при помощи функции unset(), а проверить существование массива можно при помощи функции isset(). Определим массив из 10 элементов и уничтожим каждый чётный элемент.

$arr = array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
unset($arr[0], $arr[2], $arr[4], $arr[6], $arr[8]);
// Проверяем существуют ли элементы массива
for($i = 0; $i < 10; $i++)
{
if(isset($arr[$i])) echo "Элемент $arr[$i] определён
";
else echo "Элемент $arr[$i] не определён
";
}
?>

Результатом работы скрипта из будут следующие строки

Элемент $arr[0] не определён
Элемент $arr[1] определён
Элемент $arr[2] не определён
Элемент $arr[3] определён
Элемент $arr[4] не определён
Элемент $arr[5] определён
Элемент $arr[6] не определён
Элемент $arr[7] определён
Элемент $arr[8] не определён
Элемент $arr[9] определён

  1. Операции над массивами.

1) Определения числа элементов в массиве count():

Создадим массив $name:

$name = array('Boss', 'Lentin', 'NAV', 'Endless', 'Dragons', 'SiLeNT', 'Doctor', 'Lynx');
?>

Чтобы определить число элементов в массиве можно поступить следующим образом:

echo ‘Число элементов в массиве - ’.count($name);
?>

Результат:

Число элементов в массиве – 8

Объединение массивов

Создадим два ассоциативных массива $a и $b:

$a = array(“a” => ”aa”, “b” => “bb”);
$b = array(“c” => ”cc”, “d” => “dd”);
?>

Пусть необходимо создать массив $c, которые будет содержать как элементы массива $a так и массива $b:

$a = array("a"=>"aa", "x"=>"xx");
$b = array("c"=>"cc", "d"=>"dd");
$c = $a + $b;
echo "

";
print_r($c);
echo "

";
?>

Результат:

Array
(
[a] => aa
[x] => xx
[c] => cc
[d] => dd
)

Создадим два числовых массива $a и $b:

$a = array(10,20);
$b = array(100,200,300,400,500);
?>

Их уже не получится объединить при помощи конструкции $c = $a + $b;. Для их объединения потребуется воспользоваться функцией array_merge():

$c = array_merge($a,$b);
?>

Сортировка массива

Воспользуемся массивом $name:

$name = array('Boss', 'Lentin', 'NAV', 'Endless', 'Dragons', 'SiLeNT', 'Doctor', 'Lynx');
?>

Пусть требуется отсортировать массив в алфавитном порядке, для этого можно воспользоваться следующим кодом:

sort($name);
echo "

";
print_r($name);
echo "

";
?>

Результат:

Array
(
[0] => Boss
[1] => Doctor
[2] => Dragons
[3] => Endless
[4] => Lentin
[5] => Lynx
[6] => NAV
[7] => SiLeNT
)

Пусть необходимо из массива $name выбрать самый короткий элемент (у которого наименьшее количество символов), в этом случае можно воспользоваться кодом:

$name = array('Boss', 'Lentin', 'NAV', 'Endless', 'Dragons', 'SiLeNT', 'Doctor', 'Lynx');
$min = strlen($name[0]);
$nam = $name[0];
for ($i=1; $i < count($name); $i++)
{
$len = strlen($name[$i]);
if ($len < $min)
{
$nam = $name[$i];
$min = strlen($nam);
}
}
echo 'Наименьшая длина - '.$nam;
?>

Перемещение внутри массива

Создадим массив $num:

$num = array(1,2,3,4,5,6,7,8,9,10);
?>

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

$end = end($num);
While ($end)
{
echo $end.' - ';
$end = prev($num);
}
?>

Результат:

10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 – 1

Приведённый выше код можно модифицировать:

$num = range(1,10);
print_r (array_reverse($num));
?>

Функция range(1,10) создает массив (1,2,3,4,5,6,7,8,9,10) со случайным расположением элементов. Функция array_reverse() принимает массив и располагает элементы в обратном порядке (10,9,8,7,6,5,4,3,2,1)

Функции next(), each() перемещают указатель на один элемент вперед. Функция reset() возвращает указатель на 1 элемент в массиве. Воспользуемся массивом $num:

$num = array(1,2,3,4,5,6,7,8,9,10);
?>

Пусть необходимо вывести все элементы по порядку, и на последнем элементе массива вернуть указатель на первый элемент массива. Эту операцию можно осуществить при помощи следующего кода:

$i=0; //Индекс 1 элемента
while ($i < count($num))
{
echo $num[$i].' ';
$i++;
//Проверка если $i равен числу элементов в массиве
//тогда выводим последний элемент и возвращаем указатель
if ($num[$i] == count($num))
{
echo $num[$i];
reset ($num);
echo '
'."Конец массива";
exit();
}
}
?>

Результат:

1 2 3 4 5 6 7 8 9 10
Конец массива

Перемешивание элементов в массиве shuffle()

Функция shuffle() перемешивает значения в массиве, и если массив ассоциативный то возвращает его как список:

$a = array(43,'PHP',4,57,'Boss',90);
shuffle($a);
foreach ($a as $n) echo "$n ";
?>

Случайный элемент массива

Если имеется готовый массив, из которого необходимо вывести один случайный элемент, для этого необязательно перемешивать весь массив при помощи функции shuffle(), достаточно сгенерировать случайный индекс массива:

// Определяем массив
$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Генерируем случайный индекс массива
$index = rand(0,count($arr) - 1);
// Выводим случайный элемент массива
echo $arr[$index];
?>

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...