phparraysmultidimensional-arraystring-formattingtranspose

Transpose and reduce a 2d array into a flat array of formatted strings


I have an array:

$settings = array(
    'name' => array(
        0 => 'Large Pouch',
        1 => 'XL Pouch'
    ),
    'size' => array(
        0 => '9x14',
        1 => '12x18'
    ),
    'weight' => array(
        0 => '10',
        1 => '20'
    ),
    'metro_manila_price' => array(
        0 => '59',
        1 => '79'
    ),
    'luzvimin_price' => array(
        0 => '89',
        1 => '139'
    )
);

I wanted to convert the column-based values from that array to a flat array of formatted strings:

$shipping_options = array(
    '0' => 'Large Pouch 9x14 - $59',
    '1' => 'XL Pouch 12x18 - $79'
);

How to program this?


Solution

  • You could write a loop:

    $shipping_options = array();
    foreach ($settings['name'] as $key => $value) {
       $value = sprintf('%s(%s) - $%s', 
                        $value, 
                        $settings['size'][$key], 
                        $settings['metro_manila_price'][$key]);
       $shipping_options[$key] = $value;
    }