2

我是一个在 php 中从事项目的新手。我正在尝试在 html 选项标签中添加一个 php 代码。这就是我正在做的...

$companies = Company::find('all');
foreach ($companies as $c)
{
  echo "<option value='".$c->id."' ".if($c->id == $companyselected){'selected'}.">".$c->name."</option>" ;
}

$companyselected是我从控制器传递的变量,其中包含应显示在下拉列表顶部的公司 ID。它什么也不输出。为什么我不能像这样添加。这样添加是否正确。我被这个问题困扰了很长时间。请帮帮我

4

5 回答 5

2

尝试这个:

echo "<option value='".$c->id."' ".(($c->id == $companyselected) ? 'selected=selected':'').">".$c->name."</option>" ;

已编辑

$str = "<option value='".$c->id."' ";
$str .= (($c->id == $companyselected) ? "selected='selected'":"");
$str .= ">".$c->name."</option>" ;
echo $str;
于 2013-09-19T09:22:24.460 回答
0

用这个

$companies = Company::find('all');

$selected= '';

foreach ($companies as $c)
{
    if($c->id == $companyselected){
        $selected='selected';
    }
    echo "<option value='".$c->id."' ".$selected." >".$c->name."</option>" ;
}
于 2013-09-19T09:48:30.850 回答
0

试试这个,你不能在 echo 中使用 if 语句。

$companies = Company::find('all');
foreach ($companies as $c)
{
    if($c->id == $companyselected) {
        echo "<option value='".$c->id."' selected='selected'>".$c->name."</option>" ;
    } else {
        echo "<option value='".$c->id."'>".$c->name."</option>" ;
    }
}

或者

foreach ($companies as $c)
{
   $selected = ($c->id == $companyselected) ? 'selected' : '';
   echo "<option value='".$c->id."' ".$selected.">".$c->name."</option>" ;
} 
于 2013-09-19T09:22:04.543 回答
0

你应该这样做:

使用三元运算符

foreach ($companies as $c)
  {
   $selected = ($c->id == $companyselected) ? "selected='selected'" : "";
   echo "<option value='".$c->id."' ".$selected.">".$c->name."</option>" ;
  } 
于 2013-09-19T09:22:30.997 回答
0

这是执行此操作的写入方式。

$companies = Company::find('all');
foreach ($companies as $c)
{
         echo "<option value='".$c->id."' ";
         if($c->id == $companyselected){
              echo 'selected';
         }
         echo ">".$c->name."</option>" ;
}
于 2013-09-19T09:23:53.153 回答