【问题标题】:How do I use this seemingly simple loop in CodeIgniter's view?如何在 CodeIgniter 视图中使用这个看似简单的循环?
【发布时间】:2016-03-16 15:58:12
【问题描述】:

视图中,就在页脚之前,我想加载三个 JavaScript 文件。因此,控制器设置了三个变量。例如,$js_1 = "bootstrap.js"、$js_2 = '' 和 $js_3 = "tinymce.js",它们可能为空,也可能不为空。逻辑是,仅当变量不为空时才应回显。我也想使用 三元 if 运算符

这是我能尝试的最好的了。

for ($i = 1; $i <= 3; $i++)
{
    echo (!empty ('$js_' . $i)) ? get_jscript('$js_' . $i) : NULL;
}

函数 get_jscript() 只返回 HTML 脚本 src。

function get_jscript($js) 
{
    return '<script type="text/javascript" src="' . $js . '"></script> ';
}

请注意,我提出这个问题主要是为了学习正确的 PHP 语法,而不仅仅是在视图中加载 JS。

【问题讨论】:

标签: php codeigniter


【解决方案1】:

如果你可以创建这样的数组->

$javascript = array('js_1' => "bootstrap.js", 'js_2' => '', 'js_3' = "tinymce.js");

那么在你看来你只需要调用一个方法

loop_javascript($javascript);

最好在 codeigniter helper 中创建一个函数并在控制器的函数中调用该 helper(检查如何在 codeingiter 中使用 helper)https://ellislab.com/codeigniter/user-guide/general/helpers.html->

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('loop_javascript'))
{
    function loop_javascript($jscript_array)
    {
        foreach($jscript_array as $key =>$value){
            if($value != ''){
                echo '<script type="text/javascript" src="' . $value. '"></script>';
            }
        }
    }   
}

【讨论】:

  • 谢谢。我会尝试这样做。
【解决方案2】:

This 提供了一些关于如何使用可变变量的重要信息。

for ($i = 1; $i <= 3; $i++)
{
    echo (!empty (${'js_'.$i})) ? get_jscript(${'js_'.$i}) : NULL;
}

【讨论】:

    【解决方案3】:
    for ($i = 1; $i <= 3; $i++)
    {
        if(!empty($js.'_'.$i)){ echo get_jscript($js.'_'.$i); echo "</br>";}
    }
    
    function get_jscript($js) 
    {
        return '<script type="text/javascript" src="' . $js . '"></script> ';
    }
    

    【讨论】:

    • 不,伙计。这不起作用,因为以这种方式循环会使 $js 成为一个不存在的变量。很明显,因为我想加载 JavaScript 文件,所以我是在头或脚上做的;这意味着没有换行符。
    • 虽然此答案可能是正确且有用的,但如果您 include some explanation along with it 解释它如何帮助解决问题,则最好。如果有变化(可能不相关)导致它停止工作并且用户需要了解它曾经是如何工作的,这在未来变得特别有用。谢谢!
    • 亲爱的@VivekGhimire 我将$i 的值与$js => $js.'_'.$i 连接起来,所以它给了我们变量$js_1,$js_2,$js_3..你可以使用\n\r insted of &lt;/br&gt;
    • 亲爱的@Hatchet,非常感谢您的赞赏,我会在以后处理这些事情并尽我所能解释......
    • @ManjeetBarnala,谢谢。我会看着他们。
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2021-08-21
    相关资源
    最近更新 更多