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!! :)

1
  • Is the number of options always the same ? Just those 3 options ? Commented Oct 17, 2012 at 0:08

1 Answer 1

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);
Sign up to request clarification or add additional context in comments.

1 Comment

Look ma, without testing :) Thank you.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.