0

所以我在理解如何迭代一个在 php 中看起来像这样的数组时遇到了问题:

 $styles = array(
   'css' => array(
       'name' => array(
          'core-css', 
          'bootstrap-css',
          'bootstrap-responsive-css'
        ),
       'path' => array(
           get_bloginfo('stylesheet_url'), 
           get_template_directory_uri() . '/lib/bootstrap/css/bootstrap.min.css',
           get_template_directory_uri() . '/lib/bootstrap/css/bootstrap.responsive.min.css'
        ),
    ),
 );

本质上,这种样式被传递给一个类的构造函数,然后在一个看起来像这样的方法中迭代数组(注意这个数组存储在一个名为 _options 的受保护值中的类级别,因此以下代码中的 $this->_options :

foreach ( $this->_options as $key => $value ) {
    // load all the css files
    if (isset ( $this->_options ['css'] )) {
        foreach ( $value ['name'] as $name ) {
            foreach ( $value ['path'] as $path ) {
                wp_enqueue_style ( $name, $path );
            }

        }
     }
}

这会吐出类似的东西:

  • 核心css style.css
  • 核心 CSS 引导程序
  • core-css 引导响应

.

问题现在应该很清楚,名称永远不会改变,我认为这与我如何迭代数组有关,本质上是数组

因此,非常感谢您的帮助。

4

2 回答 2

0

path数组不是数组的一部分name,应该类似于:

foreach ( $this->_options as $key => $value ) {
    // load all the css files
    if (isset ( $this->_options ['css'] )) {
        foreach ( $value ['path'] as $k=>$path ) {
            wp_enqueue_style ( $value['name'][$k], $path );
        }
     }
}

或者,您可以随时更改数组的结构:

$styles = array(
    'css' => array(
        array(
            'name'=>'core-css',
            'path'=>get_bloginfo('stylesheet_url')
        ),
        array(
            'name'=>'bootstrap-css',
            'path'=>get_template_directory_uri() . '/lib/bootstrap/css/bootstrap.min.css'
        ),
        array(
            'name'=>'bootstrap-responsive-css',
            'path'=>get_template_directory_uri() . '/lib/bootstrap/css/bootstrap.responsive.min.css'
        )
    )
);

foreach($this->_options as $key => $value){
    if (isset ( $this->_options ['css'] )) {
        foreach($this->_options ['css'] as $k=>$v){
             wp_enqueue_style ( $v['name'], $v['path'] );
        }
    }
}
于 2012-11-27T21:05:53.120 回答
0

希望订单匹配,否则您会遇到麻烦。像这样的东西:

if (isset($this->_options['css'])) {
    foreach ($this->_options['css']['name'] as $key => $name) {
        echo $name; // Your name
        echo $this->_options['css']['path'][$key]; // Your math
    }
}
于 2012-11-27T21:06:41.757 回答