来自控制器laravel的str_replace数组

时间:2017-11-22 02:39:02

标签: php html laravel

我想将$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

例如数据

$namepar = array ('MFS active user', '#4g active users','VOLTE');
$idpar   = array (1,2,12);
$reqcolaborate = array (1,2,12);

但是,为什么结果会像这样下拉

<option>MFS active user</option>
<option>#4g active users</option>
<option>MFS active user#4g active users</option> 

我希望结果像这样下拉

<option>MFS active user</option>
<option>#4g active users</option>
<option>VOLTE</option>

1 个答案:

答案 0 :(得分:1)

正如马特在这个问题上所评论的那样,str_replace()将通过定位子串而不是全字符串来修改你想要的替换。如果要在不使用带锚点的正则表达式的情况下替换整个字符串,可以使用$idpar$namepar编写自己的关联“查找”数组。

这是a demonstration

$namepar = array ('MFS active user', '#4g active users','VOLTE');
$idpar   = array (1,2,12);
$reqcolaborate = array (1,2,12);
$assocpar=array_combine($idpar,$namepar);  // write an associative array to relate $idpar with $namepar

foreach ($reqcolaborate as $parreq){
     echo $assocpar[$parreq],"\n";
}

输出:

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

或者,如果查找数组中可能不存在id,可能是:

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