@valentinadikaya

Как вернуть 2 значения в PHP return?

Есть код, который возвращает значение введенное в поле.

public function get_phone( $args = array() ) {

		
		$args = wp_parse_args( $args, array(
			'wrap'  => 'div',
			'class' => '',			
		) );
			
        return  $this->macros_wrap($args, $this->get_meta_html( 'phone' ) ) ;
			
	}


Как сделать так, чтобы перед этим возвращенным значением здесь же возвращалось описание значения, что-то типо этого:

'vell-team-phone' => array(
						'type'        => 'text',
						'label'       => esc_html__( 'Work experience', 'vel-team' ),
					),


Или просто как вставить перед возвращаемым значением тест?
  • Вопрос задан
  • 9657 просмотров
Решения вопроса 1
riky
@riky
Laravel
проще всего некоторые значения возвращать по ссылке

public function get_phone( $args, &$b ) {
        $b = 2;      
        return  1;
  }

$a = get_phone( [], &$b );
echo $a, $b; // 12
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SerafimArts
@SerafimArts
Senior Notepad Reader
Вариант 1 - Деструктуризация:
// Возврат нескольких значений:
function some() {
    return [23, 42];
}

// Получение
[$a, $b] = some();

\var_dump($a, $b);


Вариант 2 - Деструктуризация с ключами:
// Возврат нескольких значений:
function some() {
    return ['a' => 23, 'b' => 42];
}

// Получение
['a' => $a, 'b' => $b] = some();

\var_dump($a, $b);


Вариант 3 - Генераторы с ключами:
function some() {
    yield 'a' => 23;
    yield 'b' => 42;
}

foreach (some() as $key => $value) {
  echo $key . ':' . $value; // a:23 b:42
}


Вариант 4 - Генераторы без ключей:
function some() {
    yield 23;
    yield 42;
}

foreach (some() as $value) {
  echo $value; // 23 42
}


Вариант 5 - Генераторы с возвратом:
function some() {
    yield 23;
    return 42;
}

$value = some();
echo $value->current(); // 23
$value->next();
echo $value->getReturn(); // 42


Вариант 6 - DTO:
class DataTransferObject
{
    private $a;
    private $b;

    public function __construct($a, $b)
    {
        $this->a = $a;
        $this->b = $b;
    }

    public function getA()
    {
        return $this->a;
    }

    public function getB()
    {
        return $this->b;
    }
}

function some() {
    return new DataTransferObject(23, 42);
}

$value = some();
echo $value->getA(); // 23
echo $value->getB(); // 42


И ещё куча всяких вариантов, но мне влом придумывать уже)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы