Слияние и разделение массивов

May 4, 2010 by admin Комментировать »

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

Функция Array_chunk()

с помощью данной функции можно разделить один массив на несколько масси­вов определенного размера. Формат записи функции следующий.

array array_chunk ( array input, int size [, bool preserve_keys] )

В параметр input передается имя массива, который нужно разделить на масси­вы размера, заданного параметром size. Рассмотрим пример.

<?php

$а = аггау(1,2,3,4,5,б,7,8); $a_chunked = array_chunk($a,2); print_r($a_chunked) ; ?>

Данный код приведет к сле^ющему результату.

Array (

[0] => Array (

[0] =;> 1 [1] => 2

)

[1] => Array (

[0] => 3 [1] => 4

)

[2] => Array (

[0] => 5 [1] => 6

)

[3] => Array

10] => 7 t [1] => 8 \

)

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

<?php

$а = array(1,2,3,4,5,6,7,8); $a_chunked = array_chunk($a,2,TRUE); print_r($a_chunked); ?>

Тогда результат будет таким.

Array (

[0] => Array (

[0] => 1 [1] => 2

)

[1] => Array (

[2] => 3 [3] => 4

)

[2] => Array (

[4] => 5 [5] => 6

[3] => Array (

[б] => 7 [7] => 8

)

)

Изначальные индексы были сохранены.

Функция Array_merge()

Как видно из названия функции, она отвечает за слияние массивов. Формат за­писи функции следующий.

array array_merge ( array arrayl [, array array2 [, array . . . ] ] )

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

<?php

$al = array ("яблоко", "груша", "вишня") ,-$ а2 = array("киви","ананас","фейхоа");

$a_merged = array_merge($al,$а2) ; foreach ($a_inerged as $key => $value) [ echo $key . " => " . $value . "<br>";

}

?>

В результате выполнения этого примера на экране появится следующий текст,

0 => яблоко

1 => груша

2 = ‘ вишня

3 =^ киви

4 => ананас

5 => фейхоа

Для СЛИЯНИЯ массивов они не обязательно должны иметь одинаковую структу­ру. Рассмотрим пример слияния массивов с различной структурой.

<?php

$al = ar г ay ("яблоко ","17руша"," вишня") ; $а2 = аггау(1,2,"ПсШ\е"=>"Андрей");

$a_inerged = array_inerge ($al, $а2) ; foreach ($a_merged as $key => $value) { echo $key ."=>". $value . "<br>";

)

?>

Этот код выдаст следующий результат.

0 => яблоко

1 => груша

2 => вишня

3 => 1

4 => 2

паше => Андрей

То есть, на выходе будет получен массив с такой структурой.

Array (

[0] => яблоко [1] => груша [2] => вишня

[3] => 1 [4] => 2

[паше] => Андрей

)

Как видно из формы записи функции array_merge (), наличие второго и после­дующих параметров является опциональным. Если в качестве аргумента передать имя только одного массива, то произойдет упорядочение его ключей, например:

<?php

$al = array(

1 => "яблоко",

4 => "груша",

5 => "вишня"

) ;

$a_merged = arrayjnerge($al);

print_r ($a_inerged) ;

?>

В результате будет получен массив.

Array (

[0] => яблоко [1] => груша [2] => вишня

)

Это очень удобно для закрытия "пробелов" в нумерации индексов массива.

При использовании данной функции необходимо помнить, что в качестве аргу­ментов в нее могут быть переданы только массивы. Если заранее не известно, будет ли передаваемое значение массивом, то лучше использовать приведение типов. На­пример, следующий код приведет к ошибке, так как аргумент $а2 является стро­кой, а не массивом.

<?php

$al = array("name" => "яблоко", "taste" => "сладкое", "fruit" => TRUE); $a2 = "hello";

$a_merged = array_inerge ($al, $a2) ;

print_r($a_merged);

?>

Если $а2 все же необходимо объединить с $al, то нужно использовать оператор приведения к типу (array). Правильный код будет выглядеть так.

<?php

$al = array("name" => "яблоко", "taste" => "сладкое"

"fruit" => 1); $a2 = "hello";

$a_merged = array_merge($al, (array)$a2);

print_r($a_merged);

?>

В результате получится массив со следующей структурой.

Array (

[name] =^ яблоко [taste] => сладкое [fruit] => 1 [0] => hello

)

На эту особенность необходимо обратить внимание тем, кто ранее использовал данную функцию в РНР 4, так как там она имела несколько другое назначение.

Функция array_combine ()

Функция array_coinbine о соединяет два массива в один, причем элементы первого массива становятся ключами, а элементы второго массива становятся зна­чениями в новом массиве. Записывается функция следующим образом.

array array_combine ( array keys, array values )

Рассмотрим пример ее использования.

<?php

$keys = array("site_name","site_url","site_admin"); $values = array("Сайт редакции журнала PHP

Inside","phpinside.ru","nw@phpinside.ru"); ^

$a_combined = array_combine($keys,$values);

print_r($a_combined)i

?>

В результате массив $a_conibined будет иметь следующую структуру.

Array (

[site_name] => Сайт редакции журнала РНР Inside [site_url] => phpinside.ru [site_admin] => nw@phpinside.ru

)

Количество элементов в объединяемых массивах должно совпадать.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты