>  Q&A  >  본문

함수의 다중 반환

다음과 같이 두 개의 반환 값을 갖는 함수를 갖는 것이 가능합니까?

으아악

그렇다면 각각의 반품을 어떻게 따로 받을 수 있나요?

P粉022285768P粉022285768231일 전478

모든 응답(2)나는 대답할 것이다

  • P粉548512637

    P粉5485126372024-03-26 11:41:34

    기술적으로 여러 값을 반환할 수 없습니다. 그러나 이 제한 사항을 해결하는 방법이 있습니다. 여러 값을 반환하는 가장 유사한 방법은 list 키워드를 사용하는 것입니다:

    으아아아

    기술적으로는 배열을 반환하고 list를 사용하여 실제 배열을 저장하는 대신 해당 배열의 요소를 다른 값으로 저장합니다. 이 기술을 사용하면 여러 값을 반환하는 것과 가장 느껴질 수 있습니다.

    list 해결책은 PHP 전용입니다. 일부 언어는 유사한 구조를 가지고 있지만 더 많은 언어는 그렇지 않습니다. 여러 값을 "반환"하는 데 일반적으로 사용되는 또 다른 방법이 있으며 거의 ​​모든 언어에서 어떤 방식으로든 사용할 수 있습니다. 그러나 이 접근 방식은 완전히 다르게 보이므로 익숙해지는 데 시간이 걸릴 수 있습니다.

    으아아아

    이 기술은 PHP 자체에서 정의한 일부 함수에서도 사용됩니다(예: str_replace, $matches in preg_match$matches). 이는 여러 값을 반환하는 것과는 매우 다르게 느껴질 수 있지만 그만한 가치가 있습니다. 최소한 그것에 대해 아는 것

    .

    세 번째 방법은 객체를 사용하여 필요한 다양한 값을 보유하는 것입니다. 이 방법은 더 많은 입력이 필요하므로 위의 두 가지 방법보다 덜 자주 사용됩니다. 그럼에도 불구하고 동일한 변수 집합이 여러 위치에서 사용될 때(또는 물론 위 방법을 지원하지 않거나 추가 입력 없이 이 작업을 수행할 수 있는 언어에서) 이 기능을 사용하는 것이 합리적일 수 있습니다.

    으아아아

    위 방법은 함수가 여러 값을 반환하는 주요 방법을 요약합니다. 그러나 이러한 방법에는 몇 가지 변형이 있습니다. 가장 흥미로운 변형은 실제로 배열을 반환하는 변형입니다. PHP에서 배열을 사용하여 많은 작업을 수행할 수 있기 때문입니다.

    먼저 배열을 배열 이외의 것으로 취급하지 않고 간단히 배열을 반환할 수 있습니다.

    으아아아

    위 코드에서 가장 흥미로운 부분은 함수 내부의 코드가 제가 제공한 첫 번째 예와 동일하며 함수를 호출하는 코드만 변경되었다는 것입니다. 즉, 함수 호출자가 함수에서 반환한 결과로 수행하는 작업은 함수를 호출한 사람에게 달려 있습니다.

    또는 연관 배열을 사용할 수도 있습니다:

    으아아아

    Php에는 compactcompact 기능이 있어서 위와 동일한 작업을 수행하면서도 더 적은 코드를 작성할 수 있습니다. (글쎄, 예제에는 코드가 적지 않을 것이지만 실제 응용 프로그램에서는 아마도 그럴 것입니다.) 그러나 타이핑 비용 절감 효과가 최소화되고 코드를 읽기가 더 어려워지기 때문에 직접 수행하지는 않을 것입니다. 그러나 예는 다음과 같습니다.

    으아아아

    compactcompactextract에는 여기 호출 코드에 사용할 수 있는 extract

    에 대응 항목이 있지만 이를 사용하는 것은 나쁜 생각이기 때문에(특히 이와 같이 간단한 경우), 샘플도 안 드려요. 문제는 이것이 "마법처럼" 변수를 생성하므로 코드의 다른 부분을 살펴보지 않으면 어떤 변수가 생성되는지 확인할 수 없다는 것입니다. 🎜

    마지막으로 list 연관 배열에서는 잘 작동하지 않는다는 점을 언급하고 싶습니다. 다음 콘텐츠는 여러분의 기대에 부응할 것입니다:

    으아악

    그러나 다음은 다른 작업을 수행합니다.

    으아악

    연관 배열과 함께 list 与关联数组一起使用,并且其他人将来必须更改被调用函数中的代码(这可能发生在任何情况下),它可能会突然中断,所以我建议不要将 list를 사용하고 나중에 다른 사람이 호출된 함수의 코드를 변경해야 하는 경우(어떤 경우에도 발생할 수 있음) 갑자기 중단될 수 있으므로 연관 배열과 함께

    를 사용하지 않는 것이 좋습니다. . 🎜

    회신하다
    0
  • P粉717595985

    P粉7175959852024-03-26 09:06:04

    변수 2개를 반환할 수 없습니다. 그러나 배열을 펼쳐서 반환할 수 있으며 동적 변수 등을 반환하는 조건을 만들 수도 있습니다. 예를 들어 이 함수는

    을 반환합니다. 으아아아 $var2앱에서:

    으아아아

    둘 다 원한다면 기능을 살짝 수정해도 됩니다

    으아아아

    회신하다
    0
  • 취소회신하다