kazarin0v
@kazarin0v
Разработчик сайтов WordPress

Как получить переменную в функции?

Есть код:
public static function get_pages( $spreadsheet )
  {
    $result = [];

    /* Не вижу эту переменную в цикле Karr:for_in() */
    $sheetsCount = $spreadsheet->getSheetCount();

    /* это цикл Karr:for_in() */
    Karr::for_in( $sheetsCount, function( $i )
    {
      $spreadsheet->setActiveSheetIndex($i);

      $result[] = Karr::clear_empty( $spreadsheet->getActiveSheet()->toArray() );
    });

    /* Заменяю этот цикл на Karr:for_in() */
    for ($i=0; $i < $sheetsCount; $i++)
    {
      $spreadsheet->setActiveSheetIndex($i);

      $result[] = Karr::clear_empty( $spreadsheet->getActiveSheet()->toArray() );
    }

    return $result;
  }


Есть цикл:
public static function for_in( $maxCount, $func )
  {
    for ($i=0; $i < $maxCount; $i++) $func( $i );
  }


Я хочу заменить for на Karr:for_in()

Когда я это делаю переменная $spreadsheet не видна в Karr:for_in(). Как ее прочитать?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 2
Переменные в функцию нужно пробрасывать, это можно сделать двумя способами:
- через аргумент
- через use

Удобней всего будет использовать use
Karr::for_in($sheetsCount, function ($i) use ($spreadsheet) {
    $spreadsheet->setActiveSheetIndex($i);

    $result[] = Karr::clear_empty($spreadsheet->getActiveSheet()->toArray());
});


Подробнее можно почитать тут https://www.php.net/manual/ru/functions.anonymous.php
Пример #3 Наследование переменных из родительской области видимости
Ответ написан
@sl0
Цикл тут не при чем, если хочешь пользоваться переменной в анонимной функции, то надо добавить ее в scope функции.
function( $i ) use ($sheetsCount)
https://www.php.net/manual/ru/functions.anonymous.php
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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