【问题标题】:PHP nested 'foreach' loop only using last value of arrayPHP嵌套'foreach'循环仅使用数组的最后一个值
【发布时间】:2017-04-10 20:58:27
【问题描述】:

我编写了以下循环来更快地创建 WordPress 自定义控件:

<?php
  /* Creates "Color Scheme" section */
  $wp_customize->add_panel('color_scheme', array(
    'title' => 'Color Scheme',
    'priority' => 120,
  ));
    /* Creates "Navbar" section */
    $wp_customize->add_section('navbar', array(
      'title'    => 'Navbar',
      'description' => '',
      'priority' => 120,
      'panel' => 'color_scheme'
    ));
      /* Navbar Color Controls */
      $color_controls = array("menu-bg-color", "menu-button-color", "menu-site-title-color", "menu-overlay-bg-color", "menu-items-color");
      $color_labels = array("Background Color", "Button Color", "Title Color", "Overlay Background Color", "Overlay Item Color");
      foreach($color_controls as $control) {
        foreach($color_labels as $label) {
          $wp_customize->add_setting($control);
          $wp_customize->add_control(new WP_Customize_Color_Control($wp_customize, $control, array(
            'label' => $label,
            'section' => 'navbar',
            'settings' => $control
          )));
        }
      }
?>

这是结果:Screenshot of my WordPress customizer 它不循环遍历标签,只使用最后一个值。

【问题讨论】:

  • 您确定要在此处使用嵌套循环吗?您的控件和标签似乎是 1:1 匹配的。您想要一个带有标签“背景颜色”的控件“menu-bg-color”...带有标签“按钮颜色”的控件“menu-button-color”等等,对吧?
  • 是的,我希望我的控件和标签匹配。我想我想要一个嵌套循环,但如果有更好的方法,我肯定想学习如何。

标签: php arrays wordpress foreach nested-loops


【解决方案1】:
$color_controls = array(
  "menu-bg-color" => "Background Color", 
  "menu-button-color" => "Button Color", 
  "menu-site-title-color" => "Title Color", 
  "menu-overlay-bg-color" => "Overlay Background Color", 
  "menu-items-color" => "Overlay Item Color"
);

foreach ($color_controls as $control => $label) {
  $wp_customize->add_setting($control);
  $wp_customize->add_control(new WP_Customize_Color_Control($wp_customize, $control, array(
    'label' => $label,
    'section' => 'navbar',
    'settings' => $control
  )));
}

我认为这就是您要寻找的。嵌套循环适用于当您希望 array2 中的每个项目用于 array1 中的每个项目时。您实际上想要一个键和值的关联数组,并循环遍历它们,其中键是您的控件,映射到您的标签值。

【讨论】:

  • 这行得通!非常感谢您向我展示什么是关联数组!这对我来说改变了游戏规则!
猜你喜欢
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 2016-07-25
  • 2012-02-10
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 2014-05-18
相关资源
最近更新 更多