PHP arrays. There must be a simpler method to do this

Posted by RisingSun on Stack Overflow See other posts from Stack Overflow or by RisingSun
Published on 2011-01-08T03:16:33Z Indexed on 2011/01/08 3:54 UTC
Read the original article Hit count: 205

Filed under:
|

I have this array in php returned from db

Array
(
    [inv_templates] => Array
        (
            [0] => Array
                (
                    [inven_subgroup_template_id] => 1
                    [inven_group] => Wires
                    [inven_subgroup] => CopperWires
                    [inven_template_id] => 1
                    [inven_template_name] => CopperWires6G
                    [constrained] => 0
                    [value_constraints] => 
                    [accept_range] => 2 - 16
                    [information] => Measured Manual
                )

            [1] => Array
                (
                    [inven_subgroup_template_id] => 1
                    [inven_group] => Wires
                    [inven_subgroup] => CopperWires
                    [inven_template_id] => 2
                    [inven_template_name] => CopperWires2G
                    [constrained] => 0
                    [value_constraints] => 
                    [accept_range] => 1 - 7
                    [information] => Measured by Automated Calipers
                )

        )

)

I need to output this kind of multidimensional stuff

Array
(
    [Wires] => Array
        (
            [inv_group_name] => Wires
            [inv_subgroups] => Array
                (
                    [CopperWires] => Array
                        (
                            [inv_subgroup_id] => 1
                            [inv_subgroup_name] => CopperWires
                            [inv_templates] => Array
                                (
                                    [CopperWires6G] => Array
                                        (
                                            [inv_name] => CopperWires6G
                                            [inv_id] => 1
                                        )

                                    [CopperWires2G] => Array
                                        (
                                            [inv_name] => CopperWires2G
                                            [inv_id] => 2
                                        )

                                )

                        )

                )

        )

)


I currently do this stuff

foreach ($data['inv_templates'] as $key => $value) {
        $processeddata[$value['inven_group']]['inv_group_name'] = $value['inven_group'];
        $processeddata[$value['inven_group']]['inv_subgroups'][$value['inven_subgroup']]['inv_subgroup_id'] = $value['inven_subgroup_template_id'];
        $processeddata[$value['inven_group']]['inv_subgroups'][$value['inven_subgroup']]['inv_subgroup_name'] = $value['inven_subgroup'];
        $processeddata[$value['inven_group']]['inv_subgroups'][$value['inven_subgroup']]['inv_templates'][$value['inven_template_name']]['inv_name'] =  $value['inven_template_name'];
        $processeddata[$value['inven_group']]['inv_subgroups'][$value['inven_subgroup']]['inv_templates'][$value['inven_template_name']]['inv_id'] =  $value['inven_template_id'];

    }
    return $processeddata;


EDIT : A var_export

array (
  'inv_templates' => 
  array (
    0 => 
    array (
      'inven_subgroup_template_id' => '1',
      'inven_group' => 'Wires',
      'inven_subgroup' => 'CopperWires',
      'inven_template_id' => '1',
      'inven_template_name' => 'CopperWires6G',
      'constrained' => '0',
      'value_constraints' => '',
      'accept_range' => '2 - 16',
      'information' => 'Measured Manual',
    ),
    1 => 
    array (
      'inven_subgroup_template_id' => '1',
      'inven_group' => 'Wires',
      'inven_subgroup' => 'CopperWires',
      'inven_template_id' => '2',
      'inven_template_name' => 'CopperWires6G',
      'constrained' => '0',
      'value_constraints' => '',
      'accept_range' => '1 - 7',
      'information' => 'Measured by Automated Calipers',
    ),
  ),
)

The foreach is almost unreadable. There must be a simpler way

© Stack Overflow or respective owner

Related posts about php

Related posts about arrays