Объединение ассоциативных массивов в php - PullRequest
2 голосов
/ 04 мая 2019

У меня есть два массива:

Array
(
 [0] => Array
    (
        [Date] => 2019-05-04 18:40:00
        [Item] => Prasanta Kumar Ray
        [Code] => 
        [Amount] => 150
    )

[1] => Array
    (
        [Date] => 2019-05-04 21:23:00
        [Item] => Dr Praveenkumar
        [Code] => 
        [Amount] => 150
    )

)

Секунда

Array
(
 [0] => Array
    (
        [Date] => 2019-05-04 18:45:00
        [Item] => TC DC ESR
        [Code] => 
        [Amount] => 60
    )
)

Как объединить их вместе, чтобы получить ассоциативный массив длины 3?спасибо заранее.

Я пробовал array_merge и array_push.Не сработало.

Ответы [ 3 ]

2 голосов
/ 04 мая 2019

Вы можете использовать array_merge, чтобы объединить их в один array

$arr1 = Array
(
   '0' => Array
   (
    'Date' => '2019-05-04 18:40:00',
    'Item' => 'Prasanta Kumar Ray',
    'Code' => '',
    'Amount' => 150
   ),
  '1' => Array
   (
    'Date' => '2019-05-04 21:23:00',
    'Item' => 'Dr Praveenkumar',
    'Code' => '',
    'Amount' => 150
   )
);

$arr2 = Array
(
   '0' => Array
    (
     'Date' => '2019-05-04 18:45:00',
     'Item' => 'TC DC ESR',
     'Code' =>  '',
     'Amount' => 60
    )
);
$res = array_merge($arr1,$arr2);

Выход

 Array
(
[0] => Array
    (
        [Date] => 2019-05-04 18:40:00
        [Item] => Prasanta Kumar Ray
        [Code] => 
        [Amount] => 150
    )

[1] => Array
    (
        [Date] => 2019-05-04 21:23:00
        [Item] => Dr Praveenkumar
        [Code] => 
        [Amount] => 150
    )

[2] => Array
    (
        [Date] => 2019-05-04 18:45:00
        [Item] => TC DC ESR
        [Code] => 
        [Amount] => 60
    )

 )
1 голос
/ 04 мая 2019

Если вы хотите объединить и сохранить массив отсортированным по дате, вам нужно использовать array_column, чтобы сделать массивы ассоциативными по дате, ksort массив и сбросить ключ с помощью array_values.

$new = array_merge(array_column($arr1, null, 'Date'), array_column($arr2, null, 'Date'));

ksort($new);
$new = array_values($new);
var_dump($new);

Выводиз этого:

array(3) {
  [0]=>
  array(4) {
    ["Date"]=>
    string(19) "2019-05-04 18:40:00"
    ["Item"]=>
    string(18) "Prasanta Kumar Ray"
    ["Code"]=>
    string(0) ""
    ["Amount"]=>
    int(150)
  }
  [1]=>
  array(4) {
    ["Date"]=>
    string(19) "2019-05-04 18:45:00"
    ["Item"]=>
    string(9) "TC DC ESR"
    ["Code"]=>
    string(0) ""
    ["Amount"]=>
    int(60)
  }
  [2]=>
  array(4) {
    ["Date"]=>
    string(19) "2019-05-04 21:23:00"
    ["Item"]=>
    string(15) "Dr Praveenkumar"
    ["Code"]=>
    string(0) ""
    ["Amount"]=>
    int(150)
  }
}

https://3v4l.org/0lFF4

1 голос
/ 04 мая 2019

Вы уверены?

Я пытался array_merge и array_push. Не сработало.

Попробуйте с array_merge() или array_merge_recursive(). Оба должны работать на вас.

<?php
$array1 = array
    (
    array
    (
        "Date" => "2019-05-04 18:40:00",
        "Item" => "Prasanta Kumar Ray",
        "Code" => null,
        "Amount" => 150
    )
    ,
    array
    (
        "Date" => "2019-05-04 21:23:00",
        "Item" => "Dr Praveenkumar",
        "Code" =>null ,
        "Amount" => 150
    )
);
$array2 = array
    (
    array
    (
        "Date" => "2019-05-04 18:45:00",
        "Item" => "TC DC ESR",
        "Code" => null,
        "Amount" => 60
    )
);
$array3 = array_merge_recursive($array1,$array2);
print_r($array3);
?>

DEMO: https://3v4l.org/E9Y1D

...