PHP in_array and concatenate



我正在尝试使用引导标签中连接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>";

最新更新