Как создать несколько функций в foreach с id?

#php

#php

Вопрос:

Когда я использую функцию в foreach, убедитесь, что результаты становятся: ранее объявленными.

Я использую этот код:

 foreach ($posts as $post) {
    $seusag = $post['uagent'];
    function getNEOS() {
        global $seusag;
    } 
}
 

Я думал о чем-то вроде именования функции с id amp; string, например:

 $nepoid = $post['id'];
function $nepoid() { }
 

Но результаты становятся ошибкой.

Итак, как создать одну функцию в foreach, которая включает каждый post_id?

Объяснение: если функция была вне foreach и, например, содержит «windows» только в массиве, и пользователь опубликовал статус, его ОС будет только «windows», но если я обновил функцию до Windows 10 и Windows 7, его сообщение не будет обновляться, потому что данные функции были удалены.уже вставлено в БД. Но если функция была внутри foreach, я могу обновлять пользовательскую ОС в любое время в зависимости от его пользовательского агента, который уже вставлен в БД во время публикации, без необходимости редактировать его предыдущее сообщение из БД.

Комментарии:

1. Не могли бы вы, пожалуйста, показать нам свой код и правильно объяснить, что вы на самом деле пытаетесь сделать и, в частности, зачем вам это нужно?

2. Почему бы вам просто не создать одну функцию вне цикла, которую вы вызываете из цикла?

3. И то, что вы пытаетесь сделать, вообще не имеет смысла. Не зная, зачем вам это нужно (о чем мы спрашивали) и какую проблему вы пытаетесь решить, мы не можем предложить какие-либо правильные предложения.

4. Честно говоря, это объяснение на самом деле мало что прояснило. Вы знаете, что вы можете передавать аргументы функциям вместо значений жесткого кодирования или использования global в них?

5. Пожалуйста, отредактируйте свой вопрос с надлежащим объяснением, а не распространяйте его в комментариях.

Ответ №1:

Я не уверен, достигнет ли это того, чего вы хотите, но вы можете создать несколько функций в цикле, используя анонимные функции:

 $functions = [];
foreach ($posts as $post) {
    $seusag = $post['uagent'];
    $functions[$post] = function () use ($seusag) {
        return $seusag;
    }
}
 

Я не знаю, останется ли $seusag внутри функция прежней; Я не думаю, что это произойдет.