Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vtoraya_chast_uchebnika_po_WWW_Okonchat_variant...doc
Скачиваний:
33
Добавлен:
27.09.2019
Размер:
6.06 Mб
Скачать

Пример 3‑44 - использование array_merge() с параметрами разных типов в php 5

<?php

$beginning = 'foo';

$end = array(1 => 'bar');

$result = array_merge((array)$beginning, (array)$end);

print_r($result);

?>

Результат выполнения данного примера:

Array

(

[0] => foo

[1] => bar

)

д). Нахождение и получение различий в элементах двух и более массивов при сравнении значений их элементовфункция array_diff

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

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

Синтаксис использования функции:

имя_результир_массива = array_diff(имя_мас1, имя_мас2 [,имя_масN ...])

Таким образом, данная функция возвращает массив, который содержит значения имеющиеся только в массиве имя_мас1, с сохранением индекса этого элемента.

Рассмотрим некоторые особенности применения этой функции:

  1. Число элементов во входных массивах может быть различным, элементы массивов могут быть разного типа и иметь индексы разных типов.

  2. Если в массиве встречаются одинаковые элементы, то они все обрабатываются как одно значение (принимаются за один элемент).

  3. Два элемента считаются одинаковыми, только в том случае, если их строковое представление идентично. Т.е. (string) $elem1 === (string) $elem2.

е). Нахождение и получение различий в элементах двух и более массивов при одновременном сравнении значений их элементов и индексов – функция array_diff_assoc (так называемая «строгая» проверка!).

имя_результир_массива =

array_diff_assoc(имя_мас1,имя_мас2[,имя_масN…])

Функция array_diff_assoc() возвращает массив, состоящий из тех значений массива array_1, которые отсутствуют в любом другом массиве, перечисленном в последующих аргументах. При этом различными считаются такие элементы, у которых отличаются не только значения, но и индексы.

Обратите внимание на то, что ключи возвращаемого расхождения отличны от ключей расхождения, возвращаемого функцией array_diff().

Выполним обработку функцией array_diff_assoc двух массивов:

Array

(

[a] => green

[b] => brown

[c] => blue

[0] => red

)

И

Array

(

[a] => green

[0] => yellow

[1] => red

)

Мы увидим, что, пара "a" => "green" содержится в обоих массивах, поэтому она не будет включаться в результирующий массив. И наоборот, пара 0 => "red" будет содержаться в выводе функции, потому что во втором аргументе значению "red" соответствует ключ 1.

Действительно, два значения пар key => value считаются равными только, если (string) $elem1 === (string) $elem2. Другими словами, строгая проверка считает, что строковое представление должно быть идентичным.

Пример 3‑45 – обработка массивов

<?php

echo("<pre>"); //Форматирование вывода массива

echo("Использование функции list() <//Применение функции list

br>");

$ovochi = array ('картошка','морковь','свёкла');

echo("Исходный массив \$ovochi : <br>");

print_r($ovochi);

list($first,$second) = $ovochi;

echo(" Результат применения функции list(\$first,\$second) = \$ovochi: <br>");

echo " \$first = $first, ", "\$second = $second" , "<br>";

echo "<br>";

//----------------------------------------------------------

//Применение функции extract

echo("Использование функции extract()");

$fruct["good"] = "яблоко";

$fruct["better"] = "груша";

$fruct["best"] = "персик";

echo "<br>";

echo("Исходный массив \$fruct : <br>");

print_r($fruct);

extract($fruct);

echo "Новые переменные: <br>";

echo "\$good = $good <br>";

echo "\$better= $better <br>";

echo "\$best= $best <br>";

echo '<br>';

//--------------------------------------

//Разделение массива

echo("Использование функции array_list <br>");

echo 'Пример №1 - Подмассив, выделенный из $fruct <br>';

$podmassiv = array_slice($fruct, 1, 2);

print_r($podmassiv);

echo("Пример №2 на использование функции array_list <br>");

$directors = array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang");

echo("Исходный массив: <br>");

print_r($directors);

// Выводит "Array ( [0] => Stanley Kubrick [1] => Martin Scorsese),"

//без сохранения индексов

echo("Результат №1 - извлечение без сохранения индексов <br>");

print_r( array_slice( $directors, 1, 2 ) );

// Выводит "Array ( [0] => Stanley Kubrick [1] => Martin Scorsese),"

//с сохранением индексов

echo("Результат №2 - извлечение с сохранением индексов <br>");

//print_r( array_slice( $directors, 1, 2, true ) );

print_r( array_slice( $directors, 1,2,TRUE) );

//----------------------------------------------------------

echo '<br>';

//Слияние простых массивов с помощью функции array_merge

echo("Использование функции array_merge <br>");

echo 'Пример №1 слияния массивов',"<br>";

$fruct1 = array ("абрикос","нектарин","лимон");

echo 'Первый исходный массив $fruct, второй исходный массив $fruct1:<br>';

print_r($fruct1);

$novmassivsl=array_merge($fruct,$fruct1);

echo 'Результат слияния массивов $fruct и $fruct1:',"<br>";

foreach ($novmassivsl as $el)

{echo "Элемент массива: $el <br>";}

echo '<br>';

//-----------------------------------------------------------

/*Продолжение примеров слияния массивов с помощью функции array_merge */

echo 'Пример №2 слияния массивов',"<br>";

$array1 = array ("color" => "red", 2, 4);

$array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);

echo 'Первый исходный массив $array1:<br>';

print_r($array1);

echo '<br>';

echo 'Второй исходный массив $array2:<br>';

print_r($array2);

echo '<br>';

echo 'Пример №2 слияния массивов, результат:',"<br>";

$result = array_merge ($array1, $array2);

print_r($result);

echo '<br>';

echo 'Пример №3 слияния массивов',"<br>";

$array2 = array(1 => "data");

echo 'Первый исходный массив - $array1; Второй исходный массив $array2:<br>';

print_r($arr2);

echo 'Результат слияния массивов:',"<br>";

$result = array_merge ($array1, $array2);

print_r($result);

//-----------------------------------------------------------

//Примеры сравнения массивов

echo("Использование функции сравнения массивов: array_diff - нахождение различающихся по значениям элементов <br>");

$arr1 = array("a" => "green", "red", "blue", "red");

$arr2 = array("b" => "green", "yellow", "red");

echo 'Первый исходный массив $arr1:<br>';

print_r($arr1);

echo 'Второй исходный массив $arr2:<br>';

print_r($arr2);

$result = array_diff($arr1, $arr2);

echo 'Результат сравнения - массив $rezult:',"<br>";

print_r($result);

echo("Использование функции сравнения массивов: array_diff_assoc - нахождение элементов, различающихся и значениями, и индексами <br>");

echo 'Пример №1,<br>';

$arr1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");

echo 'Первый исходный массив $arr1:<br>';

print_r($arr1);

$arr2 = array("a" => "green", "yellow", "red");

echo 'Второй исходный массив $arr2:<br>';

print_r($arr2);

$result1 = array_diff_assoc($arr1, $arr2);

echo 'Результат сравнения - массив $rezult1:',"<br>";

print_r($result1);

echo 'Пример №2,<br>';

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");

$array2 = array("a" => "green", "yellow", "red");

echo 'Первый исходный массив $arr2:<br>';

print_r($arr2);

echo 'Второй исходный массив $array1:<br>';

print_r($array1);

$result2 = array_diff_assoc($arr2, $array1);

echo 'Результат сравнения - массив $rezult2:',"<br>";

print_r($result2);

?>