php - 来自 Controller laravel 的 str_replace 数组

标签 php html laravel

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

相关文章:

PHP 使用 PDO 验证用户是否存在

java - 从 PHP exec 调用 java

javascript - 仅当屏幕小于屏幕时才在屏幕底部显示 div

php - 从中间件更改目标 Controller /操作

php - 无法使用 laravel 尝试每次都返回 false 登录

mysql - 一般错误 : 1615 Prepared statement needs to be re-prepared

php - 如果价格已降低,则从 mySQL 数据库获取一行

php - 更改 MYSQL INT 值

javascript - jquery中两个给定对象中的公共(public)对象

javascript - 如何防止在 tinyMCE 编辑器中删除一个 div