gpt4 book ai didi

php - uksort 帮助 - 在单个需要帮助中使用 GROUP BY

转载 作者:行者123 更新时间:2023-11-29 14:47:37 24 4
gpt4 key购买 nike

您好,我有一个在通过 uksort() 传递后看起来像这样的数组

    Array
(
[3] => Array
(
[job_id] => 4
[job_title] => Supercar Test Driver
[company_name] => McLaren
[logo_small] => small_mclaren001.png
[logo_large] => large_mclaren002.png
[employer_id] => 3
)

[2] => Array
(
[job_id] => 3
[job_title] => Recruitment Consultant - Driving
[company_name] => MoovJob.com
[logo_small] => small_rac001.png
[logo_large] => large_rac002.png
[employer_id] => 2
)

[1] => Array
(
[job_id] => 5
[job_title] => Postal Worker / Post Person
[company_name] => Royal Mail
[logo_small] => small_royalmail001.png
[logo_large] => large_royalmail002.png
[employer_id] => 4
)

[0] => Array
(
[job_id] => 6
[job_title] => Another Job
[company_name] => MoovJob.com
[logo_small] => small_rac001.png
[logo_large] => large_rac002.png
[employer_id] => 2
)

)

但是,如果在返回此数组的 SQL 中添加 GROUP BY company_name 数组中的最后一个条目消失,我想要实现的目标是将职位名称放在公司名称下,但只显示公司名称一次,与此类似的东西,

Company Name 1
Job Title 1 Job Title 2 Job Title 3

Company Name 2
Job Title 4

Company Name
Job Title 5 Job Title 6

我试图通过执行以下操作来实现这一目标,但我只能显示一个空缺,我做错了什么?

    <?php $oldemp   = "";?>
<?php foreach($jobs as $key => $value) : ?>
<?php if ($oldemp != $value['company_name']) : ?>
<?php $oldemp = $value['company_name']; ?>
<section class="employer">
<div class="job_holder">
<img src="<?php echo base_url(); ?>media/uploads/users/<?php echo $value['logo_large']; ?>" width="198" height="148" alt="<?php echo $value['company_name']; ?>"/>
<dl>
<dt><?php echo count($key); ?></dt>
<dd>Matches</dd>
</dl>
<?php endif;?>
<span> + <a href="/jobwall/getjob/<?php echo $value['job_id']; ?>"><?php echo $value['job_title']; ?></a></span>
</div>
</section>
<?php endforeach; ?>


function jobcmp($job1, $job2)
{
return strcmp($job1['company_name'], $job2['company_name']);
}

最佳答案

尽管可以使用您的方法显示数据,但我通常发现以更方便的格式创建第二个数组要简单得多:

$groupedJobs = array();
foreach ($jobs as $data) {
if (!isset($groupedJobs[$data['company_name']])) {
$groupedJobs[$data['company_name']] = array();
}
$groupedJobs[$data['company_name']][] = $data;
}

这会创建一个新数组,使用公司名称作为键,并使用嵌套数组中该公司的职位作为值,为您提供如下所示的内容:

['MoovJob.com'] => Array
(
[0] => Array
(
(job data)
),
[1] => Array
(
(etc.)
)
),
['McLaren'] = Array
(
(etc)
)

这样循环遍历这个数组并显示就容易多了:

foreach ($groupedJobs as $companyName => $jobs) {
echo $companyName;
foreach ($jobs as $job) {
echo $job['job_title'].'<br />';
}
}

关于php - uksort 帮助 - 在单个需要帮助中使用 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com