我正在尝试使用引导标签中连接in_array来确定它是否被选中,但它不起作用。
这是有效的,并且回显是"活跃的",所以我知道理论上它会产生正确的结果,但我无法让它在我的循环中工作
echo "<td>";
echo (in_array($course->course_id, $assign_data))?'active':'';
echo "</td>";
但这行不通,它会在表外回显"活动"并分解 html
foreach($course_data as $course){
echo "<tr>";
echo "<td data-title='Course Name'>" . $course->course_name . "</td>";
echo "<td data-title='Icon' class='text-center'><i class='fa fa-lg brand " . $course->course_icon . "' ></i></td>";
echo "<td data-title='Renewal Period'>" . $course->renewal_period . " Months</td>";
echo "<td data-title='Assign'>
<div class='btn-group' data-toggle='buttons'>
<label class='btn btn-default btn-sm' " . (!in_array($course->course_id, $assign_data))?' active':'' . ">
<input type='radio' name='course[" . $course->course_id . "]' value='No' autocomplete='off' > No
</label>
<label class='btn btn-default btn-sm' " . (in_array($course->course_id, $assign_data))?' active':'' . ">
<input type='radio' name='course[" . $course->course_id . "]' value='Yes' autocomplete='off' > Yes
</label>
</div>
</td>";
echo "</tr>";
}
我不能像这样使用in_array连接吗?
在混合 HTML 和 PHP 时,您应该确保正确格式化输出字符串:
注意:我更喜欢这种语法而不是回显,因为它允许在我的 IDE 中突出显示 HTML
foreach($course_data as $course){
echo "<tr>";
echo "<td data-title='Course Name'>" . $course->course_name . "</td>";
echo "<td data-title='Icon' class='text-center'><i class='fa fa-lg brand " . $course->course_icon . "' ></i></td>";
echo "<td data-title='Renewal Period'>" . $course->renewal_period . " Months</td>";
echo "<td data-title='Assign'>
<div class='btn-group' data-toggle='buttons'>
<label class='btn btn-default btn-sm" . (!in_array($course->course_id, $assign_data))?' active':'' ) . "'>
<input type='radio' name='course[" . $course->course_id . "]' value='No' autocomplete='off' > No
</label>
<label class='btn btn-default btn-sm" . (in_array($course->course_id, $assign_data))?' active':'') . "'>
<input type='radio' name='course[" . $course->course_id . "]' value='Yes' autocomplete='off' > Yes
</label>
</div>
</td>";
echo "</tr>";
}
echo "<label class='btn btn-default btn-sm' " . (!in_array($course->course_id, $assign_data))?' active':'' . ">
// ^ this quote closes your class definition.
因此,在它之后添加的每个内容都不是类,而只是一些(无效的)html属性。
修复是(向右滚动):
echo "<label class='btn btn-default btn-sm" . (!in_array($course->course_id, $assign_data))?' active':'' . "'>";
// ^ closin quote now here
当您在字符串中使用三元 if 语句时,似乎必须将整个语句括在括号中。
不起作用;
<label class='btn btn-default btn-sm " . ! in_array($course->course_id, $assign_data) ? 'active' : '' . "'>
<input type='radio' name='course[" . $course->course_id . "]' value='No' autocomplete='off'> No
</label>
工程:
<label class='btn btn-default btn-sm " . (! in_array($course->course_id, $assign_data) ? 'active' : '') . "'>
<input type='radio' name='course[" . $course->course_id . "]' value='No' autocomplete='off'> No
</label>
以前的答案:
很难判断发生了什么,因为您的第二个代码示例似乎没有涉及所有代码。
然而。。。这样的事情应该有效:
$classes = ['btn', 'btn-default', 'btn-sm'];
if (in_array($course->course_id, $assign_data)) {
$classes[] = 'active';
}
$classesStr = implode(' ', $classes);
echo "<label class='{$classesStr}'>My Label</label>";