Справочник по PHP - [15]

Шрифт
Интервал

Стоит отметить, что ключи значений сохраняются.

Для сравнения значений массивов используется пользовательская функция data_compare_func. Она возвращает число, большее нуля, равное нулю или меньшее нуля, если первый аргумент, переданные ей в виде параметра, больше, равен или меньше второго параметра соответственно. Это отличается от функции array_diff(), где используется встроенная функция сравнения. Пример использования функции array_udiff_assoc():

>

>class cr {

> private $priv_member;

> function cr($val)

> {

> $this->priv_member = $val;

> }

>

> function comp_func_cr($a, $b)

> {

> if ($a->priv_member === $b->priv_member) return 0;

> return ($a->priv_member > $b->priv_member)? 1:-1;

> }

>}

>$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);

>$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);


>$result = array_udiff($a, $b, array("cr", "comp_func_cr"));

>print_r($result);

?>

Этот пример выведет следующее:

Array( [0.5] => cr Object ( [priv_member:private] => 12 ) [0] => cr Object ( [priv_member:private] => 23 ))

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

Стоит отметить, что данная функция в случае многомерного массива использует для сравнения одного измерение. Если вы хотите пройтись по всем измерениям, стоит использовать конструкцию array_udiff($array1[0], $array2[0], "data_compare_func");

Функция поддерживается PHP 5


array_udiff_assoc


Сравнивает массивы используя пользовательскую функцию.

Синтаксис:

array array_udiff_assoc( array array1, array array2 [, array ..., callback data_compare_func])

Функция array_udiff_assoc() возвращает массив, содержащий все значения массива array1, которые не присутствуют в других массивах, переданные в параметрах. Стоит отметить, что ключи значений используются при сравнении в отличии от функций array_diff() и array_udiff().

Для сравнения значений массивов используется пользовательская функция. Этим данная функция отличается от array_diff_assoc(), которая использует внутреннюю функции для сравнения.

Пример использования функции array_udiff_assoc():

>

>class cr {

> private $priv_member;

> function cr($val)

> {

> $this->priv_member = $val;

> }

>

> function comp_func_cr($a, $b)

> {

> if ($a->priv_member === $b->priv_member) return 0;

> return ($a->priv_member > $b->priv_member)? 1:-1;

> }

>}


>$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);

>$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);


>$result = array_udiff_assoc($a, $b, array("cr", "comp_func_cr"));

>print_r($result);

?>

Этот пример выведет следующее:

Array( [0.1] => cr Object ( [priv_member:private] => 9 ) [0.5] => cr Object ( [priv_member:private] => 12 ) [0] => cr Object ( [priv_member:private] => 23 ))

В нашем примере пара 1= new cr(4) присутствует в обеих массивах и по этому она не вошла в результирующий массив.

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

Функция поддерживается PHP 5


array_udiff_uassoc


Сравнивает массивы используя пользовательскую функцию.

Синтаксис:

array array_udiff_uassoc ( array array1, array array2 [, array ..., callback data_compare_func, callback key_compare_func])

Функция array_udiff_uassoc() возвращает массив, содержащий все значения массива array1, которые не присутствуют в других массивах, переданные в параметрах. Стоит отметить, что ключи значений используются при сравнении в отличии от функций array_diff() и array_udiff().

Для сравнения значений массивов используется пользовательская функция data_compare_func. Этим данная функция отличается от array_diff_assoc(), которая использует внутреннюю функции для сравнения.

Сравнение ключей (индексов) происходит при помощи пользовательской функции key_compare_func. Этим данная функция отличается от array_udiff_assoc(), которая использует внутреннюю функции для сравнения.

Пример использования функции array_udiff_uassoc():

>

>class cr {

> private $priv_member;

> function cr($val)

> {

> $this->priv_member = $val;

> }


> function comp_func_cr($a, $b)

> {

> if ($a->priv_member === $b->priv_member) return 0;

> return ($a->priv_member > $b->priv_member)? 1:-1;

> }

>

> function comp_func_key($a, $b)

> {

> if ($a === $b) return 0;

> return ($a > $b)? 1:-1;

> }

>}

>$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);

>$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);


>$result = array_udiff_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr", "comp_func_key"));


Еще от автора Неизвестный Автор
Галчонок

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


Сборник рассказов о порке

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


Саньтии Веды Перуна

Саньтии Веды Перуна (Книга Мудрости Перуна) одно из древнейших Славяно-Арийских Священных Преданий, сохраненных Жрецами-хранителями Древнерусской Инглиистической церкви Православных Староверов-Инглингов.


Призраки ночи

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


Закат  вечности

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


Песнь о Нибелунгах

…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.


Рекомендуем почитать
Брин Сергей  - президент компании Google

Перед Вами статья из особого сборника, в котором есть сведения не только о самых богатых людях современности, но и тех, кто явился «основоположниками» данной категории населения, - исторические личности, основатели крупнейших богатейших компаний и т. д Этот цикл статей посвящен создателям всемирно известных брендов, самыми богатыми людям в своих узких кругах, например - спортсмены, актеры, политики. И, конечно же, в этом списке нашли свое место российские олигархи и бизнесмены.Одни мечтают стать богатым и жить в достатке, другие порицают людей, которые стремятся к личному материальному успеху.


Похмельная книга

Ободряющее пособие для пьющего, пившего, собирающегося выпить…Поразительная история — такой книги в России не было. Нет, конечно, были всякие рецепты, анекдоты про пьянства, правила этикета, рассуждения о том, что такое правильное питие, а что — неправильное, злостное. Никто не написал слов, которые бы ободрили пьющего, пившего, собирающегося выпить человека в эту, безусловно, трудную минуту его жизни. Один умный приятель парафразировал: не пить в России — больше, чем не пить. Представляете, что значит пить в России — насколько это больше!


Словарь американских идиом: 8000 единиц

Это обновленное и дополненное издание, содержащее более 8000 идиоматических слов и выражений, причем каждое из которых снабжено грамматическим объяснением и практическим примером. Словарь содержит лексемные идиомы, фразеологические единицы и поговорки, имеющие особенное значение. В нем приведены наиболее употребительные выражения только американского английского языка. Этот словарь — идеальное пособие для студентов, часто разъезжающих бизнесменов и просто путешественников.


Детские инфекционные болезни

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


Жилищный кодекс Российской Федерации

Принят Государственной Думой 22 декабря 2004 года Одобрен Советом Федерации 24 декабря 2004 года (в ред. Федеральных законов от 31.12.2005 N 199-ФЗ, от 18.12.2006 N 232-ФЗ, от 29.12.2006 N 250-ФЗ, от 29.12.2006 N 251-ФЗ, с изм., внесенными Федеральным законом от 29.12.2006 N 258-ФЗ)


Телефонный компас

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