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

Форум PHP

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

 

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

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

тема: Объеденить 2 массива
 
 автор: smit272   (25.08.2008 в 21:11)   письмо автору
 
 

Есть 1-ый массив

Array
(
    [0] => Array
        (
            [ID] => 6
            [ParentID] => 0
        )

    [1] => Array
        (
            [ID] => 260
            [ParentID] => 0
        )

    [2] => Array
        (
            [ID] => 99
            [ParentID] => 0
        )

    [3] => Array
        (
            [ID] => 100
            [ParentID] => 0
        )
)


и есть массив

Array
(
    [0] => Array
        (
            [ID] => 245
            [ParentID] => 6
        )

    [1] => Array
        (
            [ID] => 83
            [ParentID] => 6
        )

    [2] => Array
        (
            [ID] => 29
            [ParentID] => 6
        )
)


Возможно, ли объединить их в один массив, вставая массив с ParentID=6 после ID = 6?
Чтобы получился вот такой массив?

Array
(
    [0] => Array
        (
            [ID] => 6
            [ParentID] => 0
        )
    [1] => Array
        (
            [ID] => 245
            [ParentID] => 6
        )

    [2] => Array
        (
            [ID] => 83
            [ParentID] => 6
        )

    [3] => Array
        (
            [ID] => 29
            [ParentID] => 6
        )

    [4] => Array
        (
            [ID] => 260
            [ParentID] => 0
        )

    [5] => Array
        (
            [ID] => 99
            [ParentID] => 0
        )

    [6] => Array
        (
            [ID] => 100
            [ParentID] => 0
        )
)

  Ответить  
 
 автор: Le bien   (25.08.2008 в 21:15)   письмо автору
 
   для: smit272   (25.08.2008 в 21:11)
 

Простите, а логика "после ID=6" в чем?

..извиняюсь, понял

  Ответить  
 
 автор: smit272   (25.08.2008 в 21:35)   письмо автору
 
   для: smit272   (25.08.2008 в 21:11)
 

Вообще реально ли это сделать?

  Ответить  
 
 автор: Le bien   (25.08.2008 в 21:54)   письмо автору
 
   для: smit272   (25.08.2008 в 21:35)
 

Вот что то наподобии, не знаю то ли, что Вам нужно, это скорее сортировка массива "по первому элементу каждого элемента"

<?php

$a1 
= array ( 
            
0    =>    array (
                            
"ID"        =>    1,
                            
"parentId"    =>    0
                            
),
            
1    =>    array (
                            
"ID"        =>    6,
                            
"parentId"    =>    0
                            
),
            
2    =>    array (
                            
"ID"        =>    15,
                            
"parentId"    =>    0
                            
),
            
3    =>    array (
                            
"ID"        =>    134,
                            
"parentId"    =>    0
                            
)
            );
            
$a2 = array ( 
            
0    =>    array (
                            
"ID"        =>    4,
                            
"parentId"    =>    1
                            
),
            
1    =>    array (
                            
"ID"        =>    3,
                            
"parentId"    =>    1
                            
),
            
2    =>    array (
                            
"ID"        =>    6,
                            
"parentId"    =>    1
                            
),
            
3    =>    array (
                            
"ID"        =>    134,
                            
"parentId"    =>    1
                            
)
            );
            

$a3                =    array_merge_recursive($a$a2);
$key            =    array ();
$value            =    array();
foreach ( 
$a3 AS $k    =>    $v )
{
    
$key[]        =    $v["ID"];
    
$value[]    =    $v["parentId"];
}
$new            =    array ();
natsort $key );
foreach ( 
$key AS $k    =>    $v )
{
    
$new[]        =    array (
                            
"ID"        =>    $v,
                            
"parentId"    =>    $value[$k] );
}
print_r $new );

?>

  Ответить  
 
 автор: Le bien   (25.08.2008 в 21:57)   письмо автору
 
   для: Le bien   (25.08.2008 в 21:54)
 

Нет, пожалуй это не то, хотя кажется смысл в заполнении массива должен быть таким же

  Ответить  
 
 автор: smit272   (25.08.2008 в 22:01)   письмо автору
 
   для: Le bien   (25.08.2008 в 21:57)
 

Дело в том что значение ParentID во 2-ом массиве может быть 260 или 99 или 100
и он должен вставиться после соответствующего ID

  Ответить  
 
 автор: BinLaden   (25.08.2008 в 22:21)   письмо автору
 
   для: smit272   (25.08.2008 в 22:01)
 

Очень интересно узнать зачем Вам такой порядок нужен.

  Ответить  
 
 автор: smit272   (25.08.2008 в 22:26)   письмо автору
 
   для: BinLaden   (25.08.2008 в 22:21)
 

Мне надо выводить в таком прядке.
Причем дальше данные могут накапливаться в этом массиве.

скажем если 2-ой массив был

Array 

    [0] => Array 
    ( 
        [ID] => 331 
        [ParentID] => 99 
    ) 
    
    [1] => Array 
    ( 
        [ID] => 123 
        [ParentID] => 99 
    ) 
    
    [2] => Array 
    ( 
        [ID] => 73 
        [ParentID] => 99 
    ) 
)



то должен получиться вот такой массив

Array 

    [0] => Array 
    ( 
        [ID] => 6 
        [ParentID] => 0 
    ) 
    
    [1] => Array 
    ( 
        [ID] => 260 
        [ParentID] => 0 
    ) 
    
    [2] => Array 
    ( 
        [ID] => 99 
        [ParentID] => 0 
    ) 
    
    [3] => Array 
    ( 
        [ID] => 331 
        [ParentID] => 99 
    ) 
    
    [4] => Array 
    ( 
        [ID] => 123 
        [ParentID] => 99 
    ) 
    
    [5] => Array 
    ( 
        [ID] => 73 
        [ParentID] => 99 
    ) 
    
    [6] => Array 
    ( 
        [ID] => 100 
        [ParentID] => 0 
    ) 
)

  Ответить  
 
 автор: sim5   (26.08.2008 в 07:28)   письмо автору
 
   для: smit272   (25.08.2008 в 22:26)
 

У вас вообще есть какая либо закономерность в том, чего вы хотите? В первом случае вы вставляете массив после первого элемента, во втором после третьего, и чем это объясняется?

  Ответить  
Rambler's Top100
вверх

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