【问题标题】:Removing Duplicate string from for each loops从每个循环中删除重复的字符串
【发布时间】:2015-11-16 16:32:57
【问题描述】:

我在从 foreach 循环的结果中删除重复项时遇到问题。

问题更多的是我如何拥有数据的过程。

这是获取我需要的数据。

$results = mysql_query($query);
     while($rows = mysql_fetch_assoc($results)){
            extract($rows);

我正在尝试获取item_specifiations 的列。在此列中有多个数据,以逗号分隔。有些项目的数据比其他项目多,有些则缺少某些数据。

$specs = explode("," , $item_specification);

我使用上述方法分离数据。然后我运行循环以显示数据库中每个项目的数据。

foreach($specs as $spec => $key ){

现在返回为每个项目(UPC、PRODUCT_NAME、ETC)分隔的每个数据,这正是我需要的。但我只需要该项目的“品牌”。所以我做了以下。

  if (strpos($key, 'Brand') === 0) {
        $brand = explode(':', $key);                
   }

现在我遇到的问题是某些商品的品牌名称重复。

所以我想删除所有返回的字符串。问题是,由于这是一个循环,因此无法将字符串相互比较。每个都是它自己的数组,所以我正在处理多个多维数组。我想不出一种方法将它们推入 1 个数组然后进行比较,或者使用类似 unique_array 的东西。

任何建议或帮助将不胜感激。我已经卡了一段时间了。

【问题讨论】:

  • 您想跳过已经找到的品牌?将其与品牌密钥一起存储在数组中,并检查密钥是否已设置。真正的问题是数据库结构。

标签: php string multidimensional-array foreach


【解决方案1】:

使用array_unique:

    $var = [];
   foreach($specs as $spec => $key) {
     if(strpos($key,'Brand') === true ) {
        $brand[]= implode(',', array_unique(explode(', ',$key)));
     } 
   }

 print_r($brand);

【讨论】:

  • 好吧,我尝试使用您的建议,但似乎当我使用此方法时,我得到以下信息:警告:array_unique() 期望参数 1 是数组,在中给出的字符串
  • 您的规格是数组吗?
  • 是的。数组(9){[0]=>字符串(33)“类型:天花板/墙壁支架”[1]=>字符串(38)“样式/调整:倾斜/旋转”[2]=>字符串(76)“适合扬声器品牌:Bose/Denon/Infinity/Insignia/Kenwood/LG/JVC/Onkyo “[3]=> string(78)”适合其他扬声器品牌:Panasonic/Philips/Pioneer/Samsung/Sony/Yamaha “[4] => string(34) " 特点 : 易于安装 " [5]=> string(38) " 品牌 : Video Security Solutions " [6]=> string(22) " MPN : ECORMS20B5 " [7]=> string(24 ) " UPC : 791090676571 " [8]=> string(24) " UPC : 不适用" }
  • $specs 是一个数组,但 $key 是一个字符串。因此,当 unique_array 与 $key 一起使用时,它会返回错误。
  • 我认为您想在字符串中搜索品牌,因此您使用的是strpos()
猜你喜欢
  • 1970-01-01
  • 2020-01-10
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
相关资源
最近更新 更多