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 );
            }

        }
     }
}

これは次のようなものを吐き出します:

  • core-css style.css
  • core-cssブートストラップ
  • core-cssブートストラップレスポンシブ

問題は今すぐに明らかになるはずです。名前は変更されません。これは、基本的に配列の配列を反復処理する方法と関係があると思います。

だからあなたの助けは大歓迎です。

4

2 に答える 2

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 に答える
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 に答える