用于返回具有唯一索引的数组的PHP函数

时间:2017-05-11 12:45:49

标签: php arrays

我有一个简单的问题。假设我有一个数组

阵列

0   
product_id  233
slug    "zotac-geforce-gtx-1070-amp-extreme-edition-8gb-zt-p10700b-10p"

1   
product_id  227
slug    "zotac-geforce-gtx-1060-mini-6gb-gddr5-zt-p10600a-10l"

2   
product_id  233
slug    "zotac-geforce-gtx-1070-amp-extreme-edition-8gb-zt-p10700b-10p"

现在,如果您看到有两个产品具有相同的product_id!我不希望我试图从重复的产品中过滤掉这个数组

这是我尝试的但它不起作用

$temp_products = array();
    foreach($products as $product)
    {
        if(count($temp_products) > 0)
        {
            foreach($temp_products as $temp_product)
            {
                if($temp_product['product_id'] != $product['product_id'])
                {
                    $temp_products[] = $product;
                }
            }
        }
        else
        {
            $temp_products[] = $product;
        }
    }

它返回与原始数组相同的数组。 $products是包含数据的主阵列。

2 个答案:

答案 0 :(得分:1)

试试这个!但我肯定建议使用array_filterarray_unique稍后发布示例。试试这个。

$temp_products = array();
    $count = 0;
    foreach($products as $product)
    {

        if(count($temp_products) > 0)
        {
            //foreach($temp_products as $temp_product)
            //{
                if($temp_products[$count]['product_id'] != $product['product_id'])
                {
                    $temp_products[] = $product;
                }
            //}
        }
        else
        {
            $temp_products[] = $product;
        }

    }

使用array_unqiue

    foreach($products as $product)
    {
       $temp_products[] = $product;
    }

    dd(array_unique($temp_products));

答案 1 :(得分:1)

另一种方法是使用辅助数组来跟踪已存在的ID。

$temp_products = array();
$already_present = array();
    foreach($products as $product)
    {
      $id = $product['product_id'];
      if ( isset($already_present[ $id ] ) ) continue;
      $temp_products[] = $product;
      $already_present[ $id ] = '';
    }

$products = $temp_products;