【发布时间】:2017-12-28 05:17:25
【问题描述】:
我有这种数组:
$array[] = "BRAND A|PERIOD 1|RANGE 1";
$array[] = "BRAND A|PERIOD 1|RANGE 2";
$array[] = "BRAND A|PERIOD 1|RANGE 3";
$array[] = "BRAND A|PERIOD 2|RANGE 1";
$array[] = "BRAND A|PERIOD 2|RANGE 2";
$array[] = "BRAND A|PERIOD 2|RANGE 3";
$array[] = "BRAND A|PERIOD 3|RANGE 1";
$array[] = "BRAND A|PERIOD 3|RANGE 2";
$array[] = "BRAND A|PERIOD 3|RANGE 3";
$array[] = "BRAND B|PERIOD 1|RANGE 1";
$array[] = "BRAND B|PERIOD 1|RANGE 2";
$array[] = "BRAND B|PERIOD 1|RANGE 3";
我想得到以下结果:
BRAND A: [PERIOD 1] [PERIOD 2] [PERIOD 3]
BRAND B: [PERIOD 1]
我尝试使用 for 循环,其中列出并分解所有值,然后 array_unique 删除 $brand 和 $period 数组值中的重复项,最后两个 foreach 嵌套循环......但我无法得到更好的结果比这个:
BRAND A: [PERIOD 1] [PERIOD 2] [PERIOD 3]
BRAND B: [PERIOD 1] [PERIOD 2] [PERIOD 3]
“品牌 B”数组仅包含一个唯一值:周期 1,但脚本会打印“品牌 A”数组中的所有唯一值。
这是我的代码:
for($i = 0; $array[$i]; $i++):
list($brand, $period, $range) = explode("|", $array[$i]);
$array_brand[] = $brand;
$unique_brand = array_unique($array_brand);
$array_period[] = $period;
$unique_period = array_unique($array_period);
endfor;
foreach($unique_brand as $value_brand):
echo $value_brand . ": ";
foreach($unique_period as $value_period):
echo "[" . $value_period . "] ";
endforeach;
echo "<br />";
endforeach;
非常欢迎任何获得所需结果的建议。 提前致谢。
【问题讨论】:
-
我不太明白你想要如何形成结果背后的逻辑?
-
@JimWright 我假设他想显示基于品牌的时期,但只显示一次以确保没有重复。
-
我已经实现的结果生成空值 => 空链接 => 所以打开没有产品的空页面。我希望如果特定产品生命周期中不存在某个时期(如品牌 B 中的情况),则不应显示它:)
标签: php array-unique