PHP将变量附加到字符串的末尾

时间:2018-03-26 16:19:01

标签: php html laravel

所以这里我想将当前登录用户的id附加到表的名称,例如Rating_User_1,但这里的1来自登录用户的id。我将登录用户的ID分配给$ id,如下面的代码所示,并将其附加到表列名称,但这不起作用。我尝试自己回显$ id并且它有效(即它吐出登录用户的id,但这不是我想要的),但是当我尝试将它附加到字符串以便&# 34;模拟"表名不起作用。有关解决方法的任何提示吗?

@foreach($data as $data)
  <tr>
    <td> {{$loop->iteration}} </td> <!-- add number to the row -->
    <td>
      <a href="{{ Url('reply_thread') }}/{{ $data->id }}" class="text" >{{ $data->Judul }}</a>
    </td>
    <td><?php $id = Auth::user()->id;
      echo $data->Rating_user_[$id]; ?> </td>
  </tr>
@endforeach

我的控制器:

function threads() {
    $data=Thread::all();
    return view('thread.thread', ['data'=>$data]);
}

表Thread中的一些表有名为Rating_user_1,Rating_user_2等的列。

4 个答案:

答案 0 :(得分:0)

变量扩展有时需要大括号才能正常运行。以下应该有效:

echo $data->{'Rating_user_' . $id}
  • 有关“花括号”变量扩展的信息,请参阅Variable Parsing - Complex Syntax
  • 虽然看起来不像你需要它,Variable Variables也可能对你有用。 (又名,$a = 'b'; $b = 'hello'; echo $$a; // Same as "echo $b", outputs 'hello'

答案 1 :(得分:0)

您有多个选项可以实现此目的,第一个是使用存储在变量中的名称调用属性/方法:

$tableName = 'Rating_user_' . $id;
$tableName = "Rating_user_$id";
$data->$tableName;

您还可以使用花括号在属性/方法调用本身上创建热concat ,如@romellem建议的那样:

$data->{'Rating_user_' . $id} 
$data->{"Rating_user_$id"} 

如果您要多次访问$data->Rating_user我会建议您使用第一种方法,如果不是第二种方法也是如此。

答案 2 :(得分:0)

你可以尝试:

@foreach($data as $data)
  <tr>
    <td> {{$loop->iteration}} </td> <!-- add number to the row -->
    <td>
      <a href="{{ Url('reply_thread') }}/{{ $data->id }}" class="text" >
        {{ $data->Judul }}
      </a>
    </td>
    <td>{{ $data->{'Rating_user_' . $id} }}</td>
   </tr>
@endforeach

答案 3 :(得分:0)

我认为你的代码几乎是正确的,我认为如果你使用双卷曲比使用echo更好:

@foreach($data as $data)
     <tr>
        <td> {{$loop->iteration}} </td> <!-- add number to the row -->
        <td>
           <a href="{{ Url('reply_thread') }}/{{ $data->id }}" class="text" >{{ $data->Judul }}</a>
        </td>
        <td>{{ $data->{'Rating_user_' . Auth::id()} }}</td>
     </tr>
@endforeach