3

I need some help trying to implode my multidimensional array twice. I'm using Joomla 2.5 and it's for a backend component..

Here's what the array is:

Array
(
    [jform] => Array
        (
            [options] => Array
                (
                    [colour] => Array
                        (
                            [0] => a
                            [1] => d
                        )

                    [size] => Array
                        (
                            [0] => b
                            [1] => e
                        )

                    [qty] => Array
                        (
                            [0] => c
                            [1] => f
                        )

                )

        )

)

I've tried using the following code:

$i=0;
$optchildArr = array();
$optchildArrX = array();
foreach ($this->options as $optArr) :

    $j=0;
    foreach ($optArr as $arr) :
        $optchildArrX[] = $arr;
        $j++;
    endforeach;

    $optchildArr[$i] = implode(',',$optchildArrX);
    $i++;
endforeach;

$this->options  = implode(';',$optchildArr);

But I'm getting these kind of results:

[options] => Array
        (
            [0] => a,d
            [1] => a,d,b,e
            [2] => a,d,b,e,c,f
        )

When I'm after:

[options] => Array
        (
            [0] => a,b,c
            [1] => d,e,f
        )

Any help would be greatly appreciated!! :)

SoulieBaby
  • 5,405
  • 25
  • 95
  • 145

1 Answers1

3

Assuming the main array is $A

function mergeArrays($colour, $size, $qty) {
    $result = array();
    for ($i=0; $i<count($colour); $i++) {
        //Assuming three arrays have the same length;
        $result[] = implode(',',array($colour[$i], $size[$i], $qty[$i]));
    }
    return $result;
}

$result_array = array_map(
    'mergeArrays',
    $A['jform']['options']['colour'],
    $A['jform']['options']['size'],
    $A['jform']['options']['qty']
);

//Check the output from this, should be the output you described.
var_dump($result_array);
Niloct
  • 9,491
  • 3
  • 44
  • 57