2013-10-17 14 views
1

我有一個數組,其中有多個選項分解到它自己的數組中。我想用循環填充這些值之一。這可能與;在forloop我會認爲它會打破。完成此請求的最佳方式是什麼?循環選項到數組中

array(
    'name' => __('Ensemble List', 'januas'), 
    'type' => 'checkbox', 
    'options' => array(
    for ($x=0; $x<=10; $x++){ 
    array('name' => __($x , 'title'), 'value' => $x) 
     } 
    ) 
), 

這裏是什麼我張貼外,整個陣列:

$meta_boxes[] = array(
    'id' => 'januas_speakers', 
    'title' => __('Ensemble', 'januas'), 
    'pages' => array('ja-event'), 
    'context' => 'normal', 
    'priority' => 'high', 
    'show_names' => true, 
    'fields' => array(
     array(
     'name' => __('Visible', 'januas'), 
     'desc' => __('Select Yes to show the box in the event page, No to hide it.', 'januas'), 
     'id' => 'januas_speakers_visible', 
     'type' => 'select', 
     'options' => array(
      array('name' => __('Yes', 'januas'), 'value' => 'y'), 
      array('name' => __('No', 'januas'), 'value' => 'n'), 
     ) 
    ), 
     array(
     'name' => __('Position', 'januas'), 
     'desc' => __('Select the preferred position for the box.', 'januas'), 
     'id' => 'januas_speakers_position', 
     'type' => 'select', 
     'options' => array(
      array('name' => __('Main', 'januas'), 'value' => 'main'), 
      array('name' => __('Sidebar', 'januas'), 'value' => 'sidebar'), 
     ) 
    ), 
     array(
     'name' => __('Order', 'januas'), 
     'desc' => __('Insert the box order (ex: 1).', 'januas'), 
     'id' => 'januas_speakers_order', 
     'std' => 1, 
     'type' => 'text_small' 
    ), 
     array(
     'name' => __('Show Title', 'januas'), 
     'desc' => __('Select Yes to show the box title, No to hide it.', 'januas'), 
     'id' => 'januas_speakers_showtitle', 
     'type' => 'select', 
     'options' => array(
      array('name' => __('Yes', 'januas'), 'value' => 'y'), 
      array('name' => __('No', 'januas'), 'value' => 'n'), 
     ) 
    ), 
     array(
     'name' => __('Show in Top menu', 'januas'), 
     'desc' => __('Select Yes to show the menu item in the event page top menu, No to hide it.', 'januas'), 
     'id' => 'januas_speakers_showinmenu', 
     'type' => 'select', 
     'options' => array(
      array('name' => __('Yes', 'januas'), 'value' => 'y'), 
      array('name' => __('No', 'januas'), 'value' => 'n'), 
     ) 
    ), 
     array(
     'name' => '', 
     'desc' => '', 
     'id' => 'januas_images_gallery', 
     'type' => 'image_gallery' 
    ), 
     array(
     'name' => __('Ensemble List', 'januas'), 
     'desc' => 'Select the ensemble memebers for this event.', 
     'id' => 'januas_speakers_completelist', 
     'type' => 'checkbox', 
     'options' => array_map(function ($x) { 
      return array(
     'name' => __($x, 'januas'), 
     'value' => $x, 
    ); 
    }, range(0,11)) 
), 
     array(
     'name' => __('Display order', 'januas'), 
     'desc' => '', 
     'id' => 'januas_speakers_speakersorder', 
     'type' => 'event_speakers' 
    ), 
     array(
     'name' => '', 
     'desc' => '', 
     'id' => 'januas_speakers_backtotop', 
     'type' => 'backtotop' 
    ) 
    ), 
); 

回答

3

你可以使用array_map

array(
    'name' => __('Ensemble List', 'januas'), 
    'type' => 'checkbox', 
    'options' => array_map(function ($x) { 
    return array(
     'name' => __($x, 'title'), 
     'value' => $x, 
    ); 
    }, range(0,11)) 
), 
+0

我試過這個解決方案。謝謝,但我得到了以下錯誤:解析錯誤:語法錯誤,意想不到的T_FUNCTION,期待')' – Denoteone

+0

@Denoteone如果函數'__'被定義,我在這裏寫的工作。你能告訴我錯誤發生在哪一行嗎? – kojiro

+0

這條線是386線,因爲它是一個更大的腳本的一部分。如有需要,我可以發佈更多信息。 – Denoteone

0

您應該使用array_push

$a = array(
    'name' => __('Ensemble List', 'januas'), 
    'type' => 'checkbox', 
    'options' => array() 
); 
    for ($x=0; $x<=10; $x++){ 
    array_push($a['options'], array('name' => __($x , 'title'), 'value' => $x)); 
    } 
print_r($a); 
0

你需要在選項內部運行循環嗎?這種方法如何。

$foo = array(); 

for ($x=0;$x<10;$x++) 
    $foo[] = $x; 

$bar = array(
    'name' => 'hello', 
    'options' => $foo 
); 
print_r($bar); 

https://eval.in/54925