Php 如何创建动态无序列表,但将选定结果保留在顶部

Php 如何创建动态无序列表,但将选定结果保留在顶部,php,html,css,Php,Html,Css,我正在创建一个动态更新的HTML/CSS列表,但是列表中的每个新项目都会放在列表的顶部。我是否可以将列表中的某个项目固定/粘贴在顶部,并将列表中新增的每个项目放置在顶部固定的项目下 下面是负责向列表中添加项目的php和html代码 <ul class="list-items"> <?php foreach($jobs[$category->id] as $job): ?> <li> <a class="list-group-item tabledi

我正在创建一个动态更新的HTML/CSS列表,但是列表中的每个新项目都会放在列表的顶部。我是否可以将列表中的某个项目固定/粘贴在顶部,并将列表中新增的每个项目放置在顶部固定的项目下

下面是负责向列表中添加项目的php和html代码

<ul class="list-items">
<?php foreach($jobs[$category->id] as $job): ?>
<li>
<a class="list-group-item tabledisplay <?php if ($job->is_featured): ?>job-highlight<?php endif; ?>" href="<?php _e(BASE_URL ."jobs/{$job->id}/". slugify($job->title ." {$lang->t('jobs|at')} ". $job->company_name)); ?>">
    <span class="job-company"><?php _e($job->company_name); ?></span>&nbsp;
    <span class="job-title"><?php _e($job->title); ?></span>
    <span class="badgee pull-right"><?php niceDate($job->created); ?></span>

</a>
</li>

像这样的东西就足够了:

<?php
$index = 3;
$featured= $jobs[$index];
unset($jobs[$index]);
?>
<ul>
    <li><?= $featured->title ?></li>
    <?php foreach($jobs as $job){ ?>
        <li><?= $job->title ?></li>
    <?php } ?>
</ul>
如果是这种情况,那么我们的任务是从结果集中提取元素或“数据行”,并将
设置为
true
。另一种方法是有两个查询,一个是针对非特色的,另一个是针对特色的结果,但现在我们只使用一个

  • 为了从数组中提取“特征”对象,我们需要使用其索引将其取消设置。要获得索引,我们可以使用以下内容:

     $jobs = [
         (object)[
            'title' => 'something',
            'is_featured' => true,
         ],
         (object)[
            'title' => 'whatev',
            'is_featured' => false,
         ],
         (object)[
            'title' => 'demo',
            'is_featured' => false,
         ],
         (object)[
            'title' => 'rand',
            'is_featured' => false,
         ]
     ];
    
     $index = array_search(true, array_column($jobs, 'is_featured'))
    
  • 接下来,我们使用
    $index
    检索“特色”作业

  • 然后我们将其从初始结果数组中移除。在此之后,
    $jobs
    将不再包含
    $featured
    作业:

     unset($jobs[$index]);
    
  • 最后,我们创建HTML,将
    $featured
    放在顶部,然后循环返回:

     <ul>
        <li><?= $featured->title ?></li>
        <?php foreach($jobs as $job) { ?>
           <li><?= $job->title ?></li>
        <?php } ?>
     </ul>
    

  • 听起来有可能。您能为当前添加项目的方式创建一个新的主题吗?@Don'tPanic我已经添加了代码。
    $job
    的哪个属性决定了应该将哪个主题固定到顶部?添加到数据库中的每个主题都作为$job放置。项目本身是介于
  • 之间的所有内容。我会在DB表中添加一个字段
    pinted
    ,将应固定在顶部的职位设置为“1”,将其余职位设置为“0”。然后使用
    orderbypinteddesc,{othersorting…}
    对已经在模型阶段的数据进行排序。我不知道你的代码会做什么,你能把它应用到我上面的代码上吗?发布了我提供的代码的分解。检查一下,如果你仍然无法理解,请告诉我。
     <ul>
        <li><?= $featured->title ?></li>
        <?php foreach($jobs as $job) { ?>
           <li><?= $job->title ?></li>
        <?php } ?>
     </ul>