我想将 $reqcolaborate
替换为 $namepar
,我有这个 Controller :
$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>
最佳答案
正如 Matts 在问题下评论的那样,str_replace()
将通过定位子字符串而不是完整字符串来破坏您的预期替换。如果您想在不使用带 anchor 的正则表达式的情况下替换整个字符串,您可以使用 $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
在你的 Controller 中(同样,我不使用 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
关于php - 来自 Controller laravel 的 str_replace 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47425935/