将foreach语句转换为函数,问题

时间:2012-01-07 16:16:31

标签: php arrays function foreach multidimensional-array

我有这个代码(下面)工作得很好,但每当我尝试将它“包装”在一个函数中时,例如。 function systemLoop($series) { ... }除了超级失败,我什么也得不到。

我是PHP(以及此级别的编码)和多维数组的新手。所以让它作为一个功能工作对我来说更加陌生。然而,由于我有一个“少数”系统系列阵列要经过我认为它在一个功能可能是一个更好的解决方案。所以我要做的就是致电systemLoop("hyper"); systemLoop("business");

请帮忙吗?我是否通过尝试将其变为函数来做正确的事情?如果我正确的步骤是否有可能的步骤我将其排除在使功能按预期工作?

$series = "super";  
foreach ( $systems[$series] as $names => $name ) {
    echo "<ul>";
    if (is_array($name)){
        echo "<h2>$names => $name</h2>";

        foreach( $systems[$series][$names] as $details => $detail ){
            if (is_array($detail)){}else{
                echo "<h3>$details => $detail</h3>";
            }
        }

        foreach( $systems[$series][$names]['components'] as $components => $component ){
            if(is_array($component)){

                foreach( $systems[$series][$names]['components']['cpu'] as $part => $specs ){
                    echo "<li>cpu $part => $specs</li>";
                }//ends foreach

            }else{
                echo "<li>$components => $component</li>";
            }//ends if is_array
        }// ends foreach
    }else{
        echo "<li>$name</li>";
    }//ends if is_array
    echo "</ul>";
    echo "<hr/>";
}//ends foreach

1 个答案:

答案 0 :(得分:1)

听起来你将它包装在函数中的问题来自于不传递$ systems变量,你可以在函数调用中将其作为全局变量或参数。我将在这里展示两个例子:

将$ systems作为参数传递:

function systemLoop($series, $systems){

你会这样称呼:

systemLoop('super', $systems);

或者将$ systems作为全局传递:

function systemLoop($series){
    global $systems;

然后你会像这样调用函数:

systemLoop('super');

从问题听起来可能是这样,无论哪种方式都可以解决你遇到的问题。