Слияние элементов массива в многомерном массиве PHP - PullRequest
0 голосов
/ 05 октября 2019

У меня есть массив php, как показано ниже

Array ( 
      [0] => Array ( 
            [0] => Some name 
            [1] => some email 
            [2] => 17981 
            [3] => 0 
            [4] => 52 
            [5] => a 
            [6] => b 
            [7] => c 
            [8] => d
        )
)

Я хотел бы объединить элементы массива после 5-го индекса, чтобы "a, b, c, d" объединялись в один индекс, как показано ниже

Array ( 
    [0] => Array ( 
        [0] => Some name 
        [1] => some email 
        [2] => 17981 
        [3] => 0 
        [4] => 52 
        [5] =>a,b,c,d 
    )
)

Спасибо за ваше время и помощь.

Ответы [ 3 ]

0 голосов
/ 05 октября 2019

Просто итерируйте по входному массиву и примите все записи в ваш выходной массив так, как вы хотите, чтобы они были размещены:

<?php
$input = [["Some name", "some email", 17981, 0, 52, 'a', 'b', 'c', 'd']];
$output = [];
$divider = 5;
array_walk($input[0], function($entry, $key) use (&$output, $divider) {
  if ($key < $divider) {
    $output[0][] = $entry;
  } else {
    $output[0][$divider][] = $entry;
  }
});
print_r($output);

Очевидно, что вывод:

Array
(
    [0] => Array
        (
            [0] => Some name
            [1] => some email
            [2] => 17981
            [3] => 0
            [4] => 52
            [5] => Array
                (
                    [0] => a
                    [1] => b
                    [2] => c
                    [3] => d
                )

        )
)
0 голосов
/ 05 октября 2019

Вы можете сдвинуть массив в 2, а затем использовать implode для склеивания второй половины:

$input = [["Some name", "some email", 17981, 0, 52, 'a', 'b', 'c', 'd']];

$array = $input[0];

$firstArray = array_slice($array, 0, 5); //return ["Some name", "some email", 17981, 0, 52]
$secondArray = array_slice($array, 5); //return ['a', 'b', 'c', 'd']

$firstArray[] = implode(",",$secondArray);

$input[0] = $firstArray;

print_r($input);

Вывод:

Array
(
    [0] => Array
        (
            [0] => Some name
            [1] => some email
            [2] => 17981
            [3] => 0
            [4] => 52
            [5] => a,b,c,d
        )

)

Демонстрация: https://3v4l.org/c45KS

0 голосов
/ 05 октября 2019

вам нужно добавить foreach и передать в него arry. затем вам нужно добавить условие внутри foreach, чтобы проверить, равен ли индекс элемента> 4, если да, затем добавить его значение к 5-му элементу, иначе ничего не делать.

пример кода:

          foreach ($origArray as $key => $subArray)

          $subArray += $arrayToBeAdded[$key];
...