0

I need to join all subarray Name values in single subarray.

Given input format:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [Name] => kumar
                )
            [1] => Array
                (
                    [Name] => siva
                )
        )
    [1] => Array
        (
            [0] => Array
                (
                    [Name] => Arun
                )
            [1] => Array
                (
                    [Name] => Prem   
                )
        )
)

required output format

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [Name] => kumar, siva
                )
        )
    [1] => Array
        (
            [0] => Array
                (
                    [Name] => Arun, Prem 
                )
        )
)

My coding attempt:

$final = array();
foreach ($NameArray as $row) {
    foreach ($row as $rows) {
        $final[] = $rows['Name'];
    }
}
print_r($final);

It shows each separate. I need each subarray to be a single array name with comma format.

mickmackusa
  • 43,625
  • 12
  • 83
  • 136
skythanigai
  • 93
  • 1
  • 9
  • 1
    Please edit your question to show the code you have so far, along with the result you are getting. – IMSoP May 16 '15 at 09:04

2 Answers2

1

You can do something like this:

foreach($a as $k1=>$ar1){
    $text = '';
    foreach($ar1 as $t){
        $text .= "{$t['Name']}, ";
    }
    unset($a[$k1]);
    $a[$k1][0]['Name'] = substr($text,0,-2);
}

var_dump($a);

Output:

array (size=2)

      0 => 
        array (size=1)
          0 => 
            array (size=1)
              'Name' => string 'kumar, siva' (length=10)
      1 => 
        array (size=1)
          0 => 
            array (size=1)
              'Name' => string 'Arun, Prem' (length=9)
n-dru
  • 9,285
  • 2
  • 29
  • 42
0

This can be solved succinctly with one loop and the implosion of the columnar values in each subarray.

Code (Demo)

$a = [
         [['Name' => 'kumar'],['Name' => 'siva']],
         [['Name' => 'Arun'],['Name' => 'Prem']]
     ];

foreach ($a as $i => $group) {
    $result[$i][] = ['Name' => implode(', ', array_column($group, 'Name'))];
}
var_export($result);

Output:

array (
  0 => 
  array (
    0 => 
    array (
      'Name' => 'kumar, siva',
    ),
  ),
  1 => 
  array (
    0 => 
    array (
      'Name' => 'Arun, Prem',
    ),
  ),
)
mickmackusa
  • 43,625
  • 12
  • 83
  • 136