php - 如何在 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'].']']);
}
我得到一个解析错误,但我实际上不知道如何以正确的方式编写它。
解决方案
您可以在一行中完成,请参阅PHP: Strings中的复杂(卷曲)语法:
$entity->{'set'.$fieldMapping['fieldName']}($data['form['.$fieldMapping['fieldName'].']']);
但是,它可能更具可读性:
$func = 'set'.$fieldMapping['fieldName'];
$args = $data['form['.$fieldMapping['fieldName'].']'];
$entity->$func($args);
推荐阅读
- hibernate - 如何将标准限制为另一个表中的 fk?
- progressive-web-apps - 尽管有 192x192 和 512x512 图像,但 PWA 初始屏幕图像不会在 Android 上显示
- web - 网站域名后的“/home”是什么?
- r - Python 和 R 交互
- ssis - 更改 SSIS 中的系统变量长度
- angular - 导入 Bootstrap 4 variables.scss 会破坏 Angular 6 编译
- json - 如何将所有字段都是默认值的类型反序列化为 None ?
- javascript - 渲染警告:没有纹理绑定到单元 0
- php - 让用户的时区等于nodejs中的时刻猜测
- javascript - 尝试使用 HighCharts 构建具有多层的solidgauge 图表