2 votes

PHP ajoute une variable à la fin d'une chaîne de caractères

Je veux donc ajouter l'identifiant de l'utilisateur actuellement connecté au nom d'une table, comme par exemple Rating_User_1, mais le 1 vient ici de l'identifiant de l'utilisateur connecté. J'ai assigné l'identifiant de l'utilisateur connecté à $id, comme indiqué ci-dessous dans le code, et je l'ai ajouté au nom de la colonne de la table, mais cela ne fonctionne pas. J'ai essayé de faire écho à l'identifiant $id par lui-même et cela fonctionne (c'est-à-dire qu'il renvoie l'identifiant de l'utilisateur connecté mais ce n'est pas ce que je veux), mais lorsque j'essaie de l'ajouter à la chaîne de caractères afin d'"émuler" le nom de la table, cela ne fonctionne pas. Des conseils sur les solutions de contournement ?

@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

Mon contrôleur :

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

et certaines des tables du fil de table ont des colonnes nommées Rating_user_1, Rating_user_2, etc.

0voto

romellem Points 1498

L'expansion des variables nécessite parfois des accolades pour fonctionner correctement. L'exemple suivant devrait fonctionner :

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

0voto

Asur Points 1586

Vous avez plusieurs options pour y parvenir, la première étant d'appeler la propriété/méthode avec le nom stocké dans une variable :

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

Vous pouvez également utiliser des accolades pour créer un fichier de type concatène chaud sur l'appel de la propriété/méthode elle-même, comme l'a suggéré @romellem :

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

Si vous voulez accéder au $data->Rating_user plus d'une fois je vous recommanderais la première approche, sinon la seconde est okey aussi bien.

0voto

rap-2-h Points 510

Vous pouvez essayer :

@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

0voto

James Riady Points 794

Je pense que votre code est presque correct, et je pense que c'est mieux si vous utilisez le double curly que d'utiliser echo comme :

@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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X