Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Объединение массивов
 
 автор: Timofey   (11.01.2006 в 17:38)   письмо автору
 
 

Имеет два одномерных массива

$main_array = array ("Пункт 1", "Пункт 2", "-", "Пункт 3");
$sub_array = array ("Пункт 2.1", "Пункт 2.2");

Необходимо вставить вместо определенного элемента $main_array (например, "-") все элементы массива $sub_array. Т.е. чтобы $main_array принял вид:
Array
(
[0] => "Пункт 1"
[1] => "Пункт 2"
[2] => "Пункт 2.1"
[3] => "Пункт 2.2"
[4] => "Пункт 3"
)
Есть ли какое-нибудь простое и красивое решение?

   
 
 автор: cernos   (11.01.2006 в 19:25)   письмо автору
 
   для: Timofey   (11.01.2006 в 17:38)
 

Если вам из двух массивов необходимо сделать вот это:

[0] => "Пункт 1"
[1] => "Пункт 2"
[2] => "Пункт 2.1"
[3] => "Пункт 2.2"
[4] => "Пункт 3"



В такой же сортировке то вот простой код, и нечего заменять не надо


$main_array = array ("Пункт 1", "Пункт 2", "Пункт 3","Пункт 2.1", "Пункт 2.2"); 

natsort($main_array);

print_r($main_array);



Если же у вас два массива то их можно объединить

$main_array = array ("Пункт 1", "Пункт 2",  "Пункт 3"); 
$sub_array = array ("Пункт 2.1", "Пункт 2.2"); 

foreach($main_array as $key->$index)
{
$arr[]=$index;
}
foreach($sub_array as $key->$index)
{
$arr[]=$index;
}
//Псоле всяго этого сделать опять же эту сортировку

natsort($main_array);

print_r($main_array);


Вроде так А там кто знает

   
 
 автор: Timofey   (11.01.2006 в 19:53)   письмо автору
 
   для: cernos   (11.01.2006 в 19:25)
 

Хитро, но значения в массиве заранее не известны, неизвестно и местоположение элемента, который надо заменить (знаю только как он "выглядит"). Пока единственным решением вижу - организация третьего массива, последовательное перекидывание в него элементов $main_array, при встрече искомого элемента - переключиться на запись в этот временный массив элементов $sub_array, после этого дописать оставшиеся элементы $main_array, в конце скопировать этот массив в $main_array.
Но как-то влоб это все.

// в приведенном примере, кажется, в последних двух строках кода следует подставить $arr.

   
 
 автор: Timofey   (11.01.2006 в 21:30)   письмо автору
 
   для: Timofey   (11.01.2006 в 19:53)
 

Пока, примерно, так:

<?
$main_array 
= array ("Вступление""Самая вторая строка""Замена""Заключение");
$sub_array = array ("первая глава""последующая глава");
$key_str "Замена"// такую строку следует подменить в массиве 
$temp_array = array(); // временный массив
foreach ($main_array as $main_data)
{
  if (
$main_data == $key_str)
  {
    foreach (
$sub_array as $sub_data)
      
$temp_array[] = $sub_data;
  }
  else
    
$temp_array[] = $main_data;
}
$main_array $temp_array;
?>

   
 
 автор: Boss   (11.01.2006 в 20:44)   письмо автору
 
   для: Timofey   (11.01.2006 в 17:38)
 

Дал неправильное решение... убрал.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования