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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.