首页 > 解决方案 > 如何在 foreach 循环中使用对象并替换变量 (OOP)?

问题描述

这段代码...

 foreach ($classes->fieldMappings as $fieldMapping) {
        echo $fieldMapping['fieldName'];
 }

...给我以下输出:

id
username
password
email
isActive

我现在想做的是,我想把这段代码......

$entity->setUsername($data['form[username]']);
$entity->setEmail($data['form[email]']);
$entity->setPassword($data['form[password]']);
$entity->setIsActive($data['form[isActive]']);

...进入一个循环。所以我像这样替换它:

foreach ($classes->fieldMappings as $fieldMapping) { 
   $entity->set'.$fieldMapping['fieldName'].'($data['form['.$fieldMapping['fieldName'].']']);
}

我得到一个解析错误,但我实际上不知道如何以正确的方式编写它。

标签: phploopsoopobject

解决方案


您可以在一行中完成,请参阅PHP: Strings中的复杂(卷曲)语法

$entity->{'set'.$fieldMapping['fieldName']}($data['form['.$fieldMapping['fieldName'].']']);

但是,它可能更具可读性:

$func = 'set'.$fieldMapping['fieldName'];
$args = $data['form['.$fieldMapping['fieldName'].']'];
$entity->$func($args);

推荐阅读