Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 循环遍历数组并删除重复项_Php_Mysql_Arrays_Loops - Fatal编程技术网

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,因为大小是键。