使用方法的返回作为另一个对象的属性名

lmyy7pcs  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(305)

我正在运行一个sql查询,它将根据用户的语言设置用值替换模板的占位符。例如,如果他选择了“en\u us”,那么我的php应该从replacements表中选择“en\u us”列。现在我试过了。比如:

while($row = $result->fetch_object())
{
    $html = str_replace("{" . $row->origin . "}", $row->$user->getLanguage(), $html);
}

但这行不通。有人知道如何做到这一点吗?方法 $user->getLanguage() 返回一个包含“en\u us”的字符串。
我的html(只是一个模板文件):

<head>

    <meta charset="{CHARSET}" />

    <base href="{BASE}" />
    <meta name="version" conent="{VERSION}" />

    <title>{TITLE}{TITLE_STD}</title>
    <meta name="description" content="{DESCRIPTION}" />
    <meta name="keywords" content="{KEYWORDS}" />

    <meta name="author" content="{AUTHOR}" />

    <link rel="favicon" href="{FAVICON}" />
    <meta name="theme-color" content="#2d2d2d" />

    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato|Roboto|Montserrat" />
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />

    <link rel="stylesheet" href="/css/desk/core.css" />
    <link rel="stylesheet" href="/css/desk/header.css" />
    <link rel="stylesheet" href="/css/desk/aside.css" />
    <link rel="stylesheet" href="/css/desk/main.css" />
    <link rel="stylesheet" href="/css/desk/popups.css" />

    <script src="/js/jQuery/min.js"></script>
    <script src="/js/include.js"></script>

我的错误消息是:可恢复的致命错误:类用户的对象无法转换为字符串。。。在线。。。

s2j5cfk0

s2j5cfk01#

如果我正确理解您的问题,您需要强制php取消引用 $user->getLanguage() 首先,然后在取消引用时使用该值 $row . 您可以像在数学表达式中使用括号一样简单地使用括号:

$row->{$user->getLanguage()}

相关问题