Php str_从控制器laravel替换阵列

Php str_从控制器laravel替换阵列,php,html,laravel,Php,Html,Laravel,我想将$reqcolaborate替换为$namepar,我有这个控制器: $reqcolaborate = DB::table("pra_kpis") ->distinct() ->pluck("kpi_parameters_id"); $namepar = DB::table('kpi_parameters')->pluck('

我想将
$reqcolaborate
替换为
$namepar
,我有这个控制器:

$reqcolaborate        =   DB::table("pra_kpis")
                          ->distinct()
                          ->pluck("kpi_parameters_id");
$namepar              = DB::table('kpi_parameters')->pluck('name');
$idpar                = DB::table('kpi_parameters')->pluck('id');

@foreach ($reqcolaborate as $parreq)                         
         <option value="{{$parreq}}">
         {{$parreq = str_replace($idpar, $namepar, $parreq)}}
         </option>
@endforeach

但是,为什么会出现这样的结果

<option>MFS active user</option>
<option>#4g active users</option>
<option>MFS active user#4g active users</option> 
MFS活动用户
#4g活跃用户
MFS活动用户#4g活动用户

我想要这样的下拉结果

<option>MFS active user</option>
<option>#4g active users</option>
<option>VOLTE</option>
MFS活动用户
#4g活跃用户
伏打

正如Matts在问题下所评论的那样,
str_replace()
将通过以子字符串而不是全字符串为目标来破坏您的预期替换。当您希望在不使用带有锚定的正则表达式的情况下替换整个字符串时,可以使用
$idpar
$namepar
编写自己的关联“查找”数组

这是:

输出:

MFS active user
#4g active users
VOLTE

在控制器中(同样,我不使用Laravel),您可以编写如下内容:

$reqcolaborate = DB::table("pra_kpis")
                     ->distinct()
                     ->pluck("kpi_parameters_id");
$lookup        = array_combine(
                     DB::table('kpi_parameters')->pluck('id'),
                     DB::table('kpi_parameters')->pluck('name')
                 );

@foreach ($reqcolaborate as $parreq)                         
    <option value="{{$parreq}}">
        {{ $lookup[$parreq] }}
    </option>
@endforeach

(我不使用Laravel)当您在
foreach()中删除
$parreq=
时会发生什么?您不需要变量声明,对吗?您可以定义一个关系来访问它。str_replace将“12”替换为“1”和“2”我不明白你的问题。你能告诉我你的预期输出是什么吗?
MFS active user
#4g active users
VOLTE
$reqcolaborate = DB::table("pra_kpis")
                     ->distinct()
                     ->pluck("kpi_parameters_id");
$lookup        = array_combine(
                     DB::table('kpi_parameters')->pluck('id'),
                     DB::table('kpi_parameters')->pluck('name')
                 );

@foreach ($reqcolaborate as $parreq)                         
    <option value="{{$parreq}}">
        {{ $lookup[$parreq] }}
    </option>
@endforeach
@foreach ($reqcolaborate as $parreq)                         
    <option value="{{$parreq}}">
        {{ isset($lookup[$parreq]) ? $lookup[$parreq] : 'Whoops, replacement not found in lookup array -- do something!' }}
    </option>
@endforeach