gpt4 book ai didi

PHP MYSQL 数组和排序

转载 作者:可可西里 更新时间:2023-11-01 08:29:19 25 4
gpt4 key购买 nike

所以,我有一个数据库表,每个客户最多有 8 个单独的类别选项。

例子:

company_name | category_1 | category_2 | category_3
****************************************************
My Company | computers | parts | electronics

等等... 多达八个类别选项。我需要做的是获取列表中的类别,并在每个类别项下列出所有具有该类别的公司。我将类别放入一个数组中,但我将所有类别放入一个 foreach 循环中,这将给我重复项。我不想列出重复项,我只想列出一次并将所有公司归入该类别。

喜欢:

计算机
公司名称

零件
公司名称

电子
公司名称

等....

我目前的代码:

$sql = $wpdb->get_results( "SELECT * FROM $table_name");

echo '<ul>';

foreach ($sql as $cat){
$cats[0] = $cat->category_1.' '.$cat->category_2.' '.$cat->category_3.' '.$cat->category_4.' '.$cat->category_5.' '.$cat->category_6.' '.$cat->category_7.' '.$cat->category_8;
$totalCats = $cats[0];
echo '<li>'.$totalCats.'</li>';
}

echo '</ul>';
}// End of foreach loop

这将给我以下内容:

  • 电脑零件
  • 计算机电子
  • 电子零件

等等...每个数据库条目取决于公司选择的类别数。

如有任何帮助,我们将不胜感激!

最佳答案

我没有数据集来测试它,但这应该可以。我们从数据集创建一个多维数组,如下所示:

[comp][0] = company A
[1] = company B
...
[elec][0] = company A
[1] = company C
...
[part][0] = company Y
[1] = company Z
...

然后我们迭代它以将其打印出来。

<?php
$cats = array();

// loop through rows
foreach($sql as $cat) {

// loop through row categories
for($i=1; $i<=8; ++$i) {

// column name
$column = 'category_'.$i;

// column has data
// $cats[category][irrelevant index] = company name
if($cat->$column !== null && $cat->$column !== '') {
$cats[$cat->$column][] = $cat->company_name;
}
}
}

// sort categories
ksort($cats);

echo '<ul>';

// loop though categories
foreach($cats as $catname=>$cat) {

// sort companies in category
sort($cat);

// category name
echo '<li>'.$catname.'</li><ul>';

// loop through companies
foreach($cat as $company) {
echo '<li>'.$company.'</li>';
}

echo '</ul>';
}
echo '</ul>';
?>

最好将类别存储在单独的表中,然后从那里开始,使用 JOIN 检索关联的公司名称。它还需要更少的代码来按您想要的方式打印出来。

更新 2015-07-09 10:02 +0000

将列数据测试更改为 $cat->$column !== ''

更新 2015-07-09 10:49 +0000

根据 wpdb 结果结构,将列数据测试更改为 $cat->$column !== null && $cat->$column !== ''

关于PHP MYSQL 数组和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31280925/

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