检查多个foreach变量的值

时间:2014-09-28 13:53:41

标签: php foreach

我有一个简单的foreach函数,可以在我的网站中加载一组脚本。唯一的问题是我添加的2个新脚本需要位于不同的文件夹位置,因此我现有的foreach不起作用。

有没有办法可以检查变量的值,如果它是2个新脚本中的一个,输出稍微不同的函数?

这就是我现在所拥有的;

$scripts = array(
    'modernizr',
    'browser-detect',
    'foundation.min',
    'functions',
    'rem',
    'custom'
);

foreach ($scripts as $script){
    wp_register_script($script, get_template_directory_uri() . '/assets/js/'.$script.'.js#asyncload', 'jquery', '', true);
    wp_enqueue_script($script);
}

现在foundation.minfunctions文件位于/js/,与/assets/js/相反,所以我有办法检查变量是否是这两个中的任何一个输出略有不同的register_scriptenqueue_script函数?

2 个答案:

答案 0 :(得分:0)

您可以通过提供将脚本指定为包含脚本名称的数组和文件夹(如果该文件夹不是默认文件夹)来使其更加灵活。像这样:

$scripts = array(
    'modernizr',
    'browser-detect',
    array('foundation.min', '/js'),
    'functions',
    'rem',
    'custom'
);

foreach ($scripts as $script){
    if(is_array($script)) {
        $scriptname = $script[0];
        $folder = $script[1];
    } else {
        $scriptname = $script;
        $folder = '/assets/js';
    }

    $path  = get_template_directory_uri();
    $path .= "$path/$script.js#asyncload";

    wp_register_script($scriptname, $path, 'jquery', '', true);
    wp_enqueue_script($scriptname);
}

答案 1 :(得分:0)

像这样的东西可能是你正在寻找的东西:

<?php

$scripts = array ('/assets/js/' => array ('modernizr','browser-detect','rem','custom'),
                      '/js/' => array ('foundation.min','functions'));

foreach ($scripts as $loc => $script) {
    foreach ($script as $name) {
       wp_register_script($name, get_template_directory_uri() . $loc.$name.'.js#asyncload', 'jquery', '', true);
       wp_enqueue_script($name);
    }
}

?>

它实际上根据位置将脚本分为两个不同的数组。然后在循环中它们都得到了相应的处理。