Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP iterable(반복 가능) 의사 타입 완벽 가이드

iterable이란?

PHP 7.1 버전부터 iterable이라는 새로운 의사 타입(pseudo-type)이 도입되었습니다. iterable은 Traversable 인터페이스를 구현한 모든 객체를 받아들일 수 있으며, 대표적인 예로 배열(array)이 있습니다. 이 타입은 foreach 구문과 함께 사용되거나, 한 번에 하나의 값을 생성(yield)하는 제너레이터(generator) 함수와 함께 활용됩니다.

기본 문법

함수의 매개변수 타입을 iterable로 선언하면, 해당 함수는 foreach 문에서 사용할 수 있는 값들의 집합을 인자로 받을 수 있습니다. 만약 전달된 매개변수가 foreach 루프를 지원하지 않으면, PHP 파서는 TypeError를 발생시킵니다.

예제: 매개변수로 iterable 받기

<?php
$arr1=array("PHP","Java","Python");
function myfunc (iterable $arr1){
    foreach ($arr1 as $lang){
        echo $lang . "\n";
    }
}
myfunc($arr1);
?>

실행 결과

PHP
Java
Python

함수의 반환 타입으로 iterable 사용하기

PHP 함수는 배열처럼 반복 가능한(iterable) 데이터 타입을 반환값으로 지정할 수도 있습니다. 반환된 값의 타입을 확인하려면 is_iterable() 함수를 사용합니다.

예제: iterable 반환 타입

<?php
function newfunc ():iterable{
    $arr2=[];
    for ($i=1;$i<4;$i++){
        $arr2[$i]=$i*2;
    }
    return $arr2;
}
$ret=newfunc();
var_dump (is_iterable($ret));
?>

실행 결과

bool(true)

제너레이터와 함께 사용하기

아래는 iterable 반환 타입을 가진 제너레이터 함수의 예제입니다. 제너레이터는 yield 키워드를 통해 값을 하나씩 순차적으로 생성하며, 이 역시 iterable 타입에 해당합니다.

예제: 제너레이터 함수

<?php
function gen(): iterable {
    yield 1;
    yield 2;
    yield 3;
}
gen();
?>

지원 버전

iterable 의사 타입은 PHP 7.1에서 처음 도입되었으며, 그 이상 버전에서 모두 사용할 수 있습니다.