2012-01-07 6 views
-2

입니다.이 코드는 아래에서 잘 작동하지만, 예를 들어 함수에서 '감싸려고'할 때마다 사용합니다. function systemLoop($series) { ... } 나는 아무것도 얻지 못한다.foreach 문을 함수로 바꾸는 문제는

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 
+0

foreach 루프 전체에서'$ systems [$ series] [$ names]'는'$ name'으로 대체되어야합니다. – cmbuckley

+7

"uber 실패"는 실제로 문제가 무엇인지 알려주지 않습니다. 특히, 문제/증상은 무엇입니까? –

+0

@cbuckley - 만약 그렇다면 foreach가 의도 한대로 작동하지 않습니다. –

답변

1

그것은 당신이 전역 또는 함수 호출에서 매개 변수로 하나 할 수있는 $ 시스템 변수를 전달하지에서 제공하는 기능에 포장하여 문제 같은 소리. 매개 변수로

합격 $ 시스템 :

function systemLoop($series, $systems){ 

이 같이 부를 것이다 :

systemLoop('super', $systems); 

또는 글로벌로 $ 시스템을 통과 :

나는 여기에 두 예를 보여 드리겠습니다
function systemLoop($series){ 
    global $systems; 

다음과 같이 함수를 호출하면됩니다.

systemLoop('super'); 

문제가있는 것처럼 보일 수도 있습니다. 문제가 해결되면 문제가 해결됩니다.

+0

$ 시스템 전역 변수를 추가하면 치료가 효과적입니다. 나는 그것이 내가 놓친 간단한 일임을 알았다. 대단히 감사합니다 :). –

+1

전 세계에 반대하여 값을 전달하는 것이 좋습니다. 버그가 발생하면 "데이터를 따르는"일이 쉬워 질뿐만 아니라 $ 시스템이 수정되는 시점을 명확히 알 수 있습니다. – Fleep

+0

@Fleep "systemLoop ($ series, $ systems)"처럼 값을 전달 하시겠습니까? 지금은 글로벌 작품을 완벽하게 추가하고 싶습니다. 나는 동의하지 않는다. 값을 전달하는 것이 무엇인지 모르겠다. ... –

관련 문제