Php 循环遍历数组并删除重复项
我有以下轮胎尺寸数组:Php 循环遍历数组并删除重复项,php,mysql,arrays,loops,Php,Mysql,Arrays,Loops,我有以下轮胎尺寸数组: Array ( [0] => 155 [1] => 70 [2] => 13 ) Array ( [0] => 155 [1] => 80 [2] => 13 ) Array ( [0] => 165 [1] => 65
Array
(
[0] => 155
[1] => 70
[2] => 13
)
Array
(
[0] => 155
[1] => 80
[2] => 13
)
Array
(
[0] => 165
[1] => 65
[2] => 14
)
Array
(
[0] => 175
[1] => 65
[2] => 14
)
Array
(
[0] => 175
[1] => 70
[2] => 13
)
Array
(
[0] => 175
[1] => 70
[2] => 14
)
等等。现在我正在创建一个下拉列表,以便人们可以选择他们正在搜索的轮胎尺寸。下面是我的PHP代码:
include 'database.php';
$result = $mysqli->query('SELECT DISTINCT SKU_SIZE FROM SKU_DATA WHERE SKU_BRANDNAME = "'.$brand.'" ORDER BY SKU_SIZE');
while( $row = $result->fetch_assoc()){
$sku_size = $row['SKU_SIZE'];
$chars = preg_split('/[^\d]/', $sku_size, -1, PREG_SPLIT_NO_EMPTY);
echo "<option>".$chars[0]."</option>";
}
包括“database.php”;
$result=$mysqli->query('从SKU_数据中选择不同的SKU_大小,其中SKU_BRANDNAME=“.”.$brand.“按SKU_大小排序”);
而($row=$result->fetch_assoc()){
$sku_大小=$row['sku_大小'];
$chars=preg\u split('/[^\d]/',$sku\u size,-1,preg\u split\u NO\u空);
回显“$chars[0]”;
}
现在,代码只是显示每个数组中的第一个数字,对于它们选择的第一个下拉列表
现在它显示的是155155165175175,我希望它只显示唯一的值,这样它就会显示155165175
更新:谢谢!我让那部分工作起来了。一个简单的问题。。顺序不太对,不知道我做错了什么。以下是预览:
使用以下方法:
while( $row = $result->fetch_assoc()){
$sku_size = $row['SKU_SIZE'];
$chars = preg_split('/[^\d]/', $sku_size, -1, PREG_SPLIT_NO_EMPTY);
$sizes[$chars[0]] = true;
}
ksort($sizes, SORT_NUMERIC);
foreach ($sizes as $size => $tmp){
echo "<option value=\"$size\">$size</option>";
}
while($row=$result->fetch_assoc()){
$sku_大小=$row['sku_大小'];
$chars=preg\u split('/[^\d]/',$sku\u size,-1,preg\u split\u NO\u空);
$size[$chars[0]]=true;
}
ksort($size,SORT\u NUMERIC);
foreach($大小为$大小=>$tmp){
回显“$size”;
}
使用以下方法:
while( $row = $result->fetch_assoc()){
$sku_size = $row['SKU_SIZE'];
$chars = preg_split('/[^\d]/', $sku_size, -1, PREG_SPLIT_NO_EMPTY);
$sizes[$chars[0]] = true;
}
ksort($sizes, SORT_NUMERIC);
foreach ($sizes as $size => $tmp){
echo "<option value=\"$size\">$size</option>";
}
while($row=$result->fetch_assoc()){
$sku_大小=$row['sku_大小'];
$chars=preg\u split('/[^\d]/',$sku\u size,-1,preg\u split\u NO\u空);
$size[$chars[0]]=true;
}
ksort($size,SORT\u NUMERIC);
foreach($大小为$大小=>$tmp){
回显“$size”;
}
使用临时数组存储已回显
的数字。使用临时数组存储已回显
的数字。创建一个数组,并在输出前检查数组中是否有每个值。如果它不在数组中,请在输出前将其添加
include 'database.php';
$result = $mysqli->query(
'SELECT DISTINCT SKU_SIZE
FROM SKU_DATA WHERE SKU_BRANDNAME = "'.$brand.'"
ORDER BY SKU_SIZE'
);
$seen = array();
while( $row = $result->fetch_assoc()){
$sku_size = $row['SKU_SIZE'];
$chars = preg_split('/[^\d]/', $sku_size, -1, PREG_SPLIT_NO_EMPTY);
if(in_array($chars[0], $seen))
continue;
$seen[] = $chars[0];
echo "<option>".$chars[0]."</option>";
}
包括“database.php”;
$result=$mysqli->query(
'选择不同的SKU_大小
来自SKU_数据,其中SKU_BRANDNAME=“”.$brand.”
按SKU_尺寸订购'
);
$seen=array();
而($row=$result->fetch_assoc()){
$sku_大小=$row['sku_大小'];
$chars=preg\u split('/[^\d]/',$sku\u size,-1,preg\u split\u NO\u空);
if(在_数组中($chars[0],$seen))
继续;
$seen[]=$chars[0];
回显“$chars[0]”;
}
创建一个数组,并在输出前检查数组中是否有每个值。如果它不在数组中,请在输出前将其添加
include 'database.php';
$result = $mysqli->query(
'SELECT DISTINCT SKU_SIZE
FROM SKU_DATA WHERE SKU_BRANDNAME = "'.$brand.'"
ORDER BY SKU_SIZE'
);
$seen = array();
while( $row = $result->fetch_assoc()){
$sku_size = $row['SKU_SIZE'];
$chars = preg_split('/[^\d]/', $sku_size, -1, PREG_SPLIT_NO_EMPTY);
if(in_array($chars[0], $seen))
continue;
$seen[] = $chars[0];
echo "<option>".$chars[0]."</option>";
}
包括“database.php”;
$result=$mysqli->query(
'选择不同的SKU_大小
来自SKU_数据,其中SKU_BRANDNAME=“”.$brand.”
按SKU_尺寸订购'
);
$seen=array();
而($row=$result->fetch_assoc()){
$sku_大小=$row['sku_大小'];
$chars=preg\u split('/[^\d]/',$sku\u size,-1,preg\u split\u NO\u空);
if(在_数组中($chars[0],$seen))
继续;
$seen[]=$chars[0];
回显“$chars[0]”;
}
仅使用第一个值创建一个新数组
$diameter = array();
foreach ($tires as $tire) {
$diameter[] = $tire[0];
}
然后,使用array_unique()删除重复项,或者仅将它们添加到$diameter(如果它们不在其中)
然后使用$diameter数组创建下拉列表
这样做的好处是,您还可以对$diameter数组进行排序。仅使用第一个值创建一个新数组
$diameter = array();
foreach ($tires as $tire) {
$diameter[] = $tire[0];
}
然后,使用array_unique()删除重复项,或者仅将它们添加到$diameter(如果它们不在其中)
然后使用$diameter数组创建下拉列表
这样做的好处是,您还可以对$diameter数组进行排序。您可以使用array_unique()函数从数组中删除任何重复的唯一项 例如:
可以使用array_unique()函数从数组中删除任何重复的唯一项 例如:
我最喜欢这个解决方案,因为不需要第二个循环。这取决于OP想要对其脚本的其余部分做什么,有两个循环可能是很有意义的,尽管他在帖子中没有指定。这是正确的,尤其是如果他以后想再次使用查询结果的话。我最喜欢这个解决方案,因为不需要第二个循环。根据OP希望对其脚本的其余部分执行的操作,有两个循环可能很有意义,尽管他在帖子中没有指定。这是正确的,尤其是如果他以后想再次使用查询结果的话。太好了,谢谢!如果你不介意的话,我刚刚更新了我的答案。你能看到订单是怎么回事吗?要使订单正确,请将行更改为
foreach(sort($size,sort\u NUMERIC)为$size=>$tmp){
在code.p.s.中添加了排序。在我的情况下,您必须使用ksort,因为大小就是键。非常好,谢谢!如果您不介意,我刚刚更新了我的答案。您能看到排序的情况吗?要使顺序正确,请将行更改为foreach(sort($size,sort\u NUMERIC)as$size=>tmp){
在code.p.s.中添加了排序。在我的例子中,您必须使用ksort,因为大小是键。