2013-12-12 3 views
0

저는 foreach 루프 내에서 함수를 올바르게 호출하는 방법에 대한 많은 솔루션을 연구하고 시도해 왔으며 여전히 오류가 발생하고 있습니다. 아래의 세부 사항은 다음과 같습니다Foreach 루프에서 함수를 올바르게 구성하는 방법은 무엇입니까?

$firstName = "CA"; 
    $firstNameArr = str_split($firstName); 

    foreach ($firstNameArr as $value){ 

    function getLtr($ltr){ 

     switch ($ltr) : 
      case "A": return 'The letter is A'; 
      case "B": return 'The letter is B'; 
      case "C": return 'The letter is C'; 
      default: return 'This is not a valid selection'; 

     endswitch; 
    } 
    echo getLtr($value) . '<br>'; 
    } 

I 나타나는 오류를 :

내가 도움을 주셔서 감사합니다 "getltr()을 재 선언 할 수 없습니다 (이전에 함수의 첫 번째 줄 참조 ...에서 선언)"!

+0

$firstName = "CA"; $firstNameArr = str_split($firstName); function getLtr($ltr){ switch ($ltr) : case "A": return 'The letter is A'; case "B": return 'The letter is B'; case "C": return 'The letter is C'; default: return 'This is not a valid selection'; endswitch; } foreach ($firstNameArr as $value){ echo getLtr($value) . '<br>'; } 
대답과의 추가 조언을 주셔서 감사합니다 의 전체 지점 이잖아 자체 문서화 (따라서 귀하가 선택한 답변 임)! 나는 코딩에 익숙하지 않은데, 나는 혼란스러워 다른 비밀스러운 예제로부터 배우려고 노력했다. – GordonM

답변

1

당신은 루프 내부의 기능을 넣지 마십시오, 당신은 루프 내에서 호출.

$firstName = "CA"; 
$firstNamesArray = str_split($firstName); 

foreach ($firstNamesArray as $value) { 
    echo getLetter($value) . '<br>'; 
} 

/** 
* The function should be outside the loop. 
* When it's inside, it's getting redeclared every time the loop iterates. 
*/ 
function getLetter($letter) { 
    switch ($letter) : 
     case "A": 
      return 'The letter is A'; 
     case "B": 
      return 'The letter is B'; 
     case "C": 
      return 'The letter is C'; 
     default: 
      return 'This is not a valid selection'; 
    endswitch; 
} 

알림 귀하의 기능 이름과 변수가 나와 있습니다. 그런 약어를 사용하지 마십시오. 스스로 문서화하는 코드를 시도해보십시오. 즉, 약식 약어 대신에 함수와 변수 이름이 의미가 있음을 의미합니다. 당신이 foreach 루프의 외부 기능을 넣어

+0

안에 함수 정의를 넣을 수 없습니다 – user1713438

4

함수가 루프 외부에 있어야합니다. 이 같은

시도 뭔가 :

$firstName = "CA"; 
$firstNameArr = str_split($firstName); 

foreach ($firstNameArr as $value){ 
    echo getLtr($value).'<br>'; 
} 

function getLtr($ltr){ 

    switch ($ltr) : 
     case "A": return 'The letter is A'; 
     case "B": return 'The letter is B'; 
     case "C": return 'The letter is C'; 
     default: return 'This is not a valid selection'; 

    endswitch; 
} 
1

함수 :

가 당신은 루프
+0

당신이 말할 수 있듯이, 나는 코딩에서 초보자입니다. :) – user1713438

관련 문제