0

私はあまり詳しくありませんが、コードを短くする方法があるはずです。以下のように多次元配列を持っています。

return array(

    'save' => 'here is the save message',

    'options' => array(

        // section for item 1
        array(
            'name' => 'Item 1',
            'type' => 'text',
            'id' => 'item_1_type_1',
        ),

        array(
            'name' => 'Item 2',
            'type' => 'text',
            'id' => 'item_1_type_2',
        ),

        array(
            'name' => 'Item 3',
            'type' => 'text',
            'id' => 'item_1_type_3',
        ),


        // section for item 2
        array(
            'name' => 'Item 1',
            'type' => 'text',
            'id' => 'item_2_type_1',
        ),

        array(
            'name' => 'Item 2',
            'type' => 'text',
            'id' => 'item_2_type_2',
        ),

        array(
            'name' => 'Item 3',
            'type' => 'text',
            'id' => 'item_2_type_3',
        ),

        // here I also may add more fields aprart from loop
        // but that would be an array with the same format

        'submit' => array(
                    'name' => 'Save Options',
                    'id' => 'save_theme_options'
                ),
    ),

);

現在、合計 10 個のアイテム (ID を参照してください) があり、各アイテムには 10 個のフィールドがあります (参照コードには 3 つしかありません)。したがって、各フィールドのコードを記述すると、約 100 個の配列になるため、アイテムごとにループを繰り返すことができる方法を探しています。

ちゃんと説明してくれたらいいのに..

4

2 に答える 2

0
$sections = "Section1,Section2";
$itemCount = 3; // how many items you need
$generated = array(); // generated array

foreach(explode(",",$sections) as $k/*for index number*/=>$v/*section name*/)
{
    for(int i = 0; i < $itemCount; $i++)
    {
        $generated[] = array("name" => "Item ".($i+1/*starts from 0*/), "type"=> "item", "id" => "$v_$k_type_$i");          
    }
}
于 2013-07-23T12:03:59.897 に答える