【发布时间】:2012-02-04 23:08:31
【问题描述】:
我的这段代码(如下)工作得很好,但是每当我尝试将它“包装”在一个函数中时,例如。 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[$series][$names]应在整个 foreach 循环中替换为$name。 -
"nothing but uber fail" 并没有真正告诉我们问题出在哪里。具体是什么问题/症状?
-
@cbuckley - 如果我这样做了,foreach 不会按预期运行。
-
@OliCharlesworth 我试图让这段代码作为一个函数工作。如果我把它包起来,什么都不会发生。我不知道我是否缺少一个步骤。我只是找不到解决方案。
-
如果你将逻辑封装在一个函数中,你是把
$systems变量也传递进去,还是让它成为全局变量?看看variable scope。
标签: php arrays function foreach multidimensional-array