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


Turning foreach statements into a function, issue

我有这个代码(下面)运行得很好,但每当我试图将它"包装"到函数中时,例如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

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

传递$系统作为参数:

function systemLoop($series, $systems){

你会这样称呼它:

systemLoop('super', $systems);

或者通过$系统作为全局:

function systemLoop($series){
    global $systems;

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

systemLoop('super');

从问题听起来可能是什么,任何一种方式都应该解决你的问题。