PHP如何从数组中删除元素 – array_uniqe将无法正常工作

我有PHP数组,我有从这个数组中删除一些元素的问题.它看起来像这样:

Array
(
    [0] => 2x 633130A
    [1] => 2x 525130B
    [2] => 2x 591130B
    [3] => 2x 963130B
    [4] => 2x 813130B (20mm)
    [5] => 2x 813130B
    [6] => 2x 313130B (12mm)
    [7] => 2x 313130B
    [8] => 4x 413130B
    [9] => 2x 633130B
    [12] => 2x 381130A (23mm)
    [13] => 2x 381130A
)

现在我想删除没有mm参数的重复元素,如下所示:

    FROM                =====>              TO          

Array                                   Array
(                                       (
    [0] => 2x 633130A                   [0] => 2x 633130A       
    [1] => 2x 525130B                   [1] => 2x 525130B
    [2] => 2x 591130B                   [2] => 2x 591130B
    [3] => 2x 963130B                   [3] => 2x 963130B
    [4] => 2x 813130B (20mm)            [4] => 2x 813130B (20mm)
    [5] => 2x 813130B <= REMOVE         [5] => 2x 313130B (12mm)
    [6] => 2x 313130B (12mm)            [6] => 4x 413130B
    [7] => 2x 313130B <= REMOVE         [7] => 2x 633130B
    [8] => 4x 413130B                   [8] => 2x 381130A (23mm)
    [9] => 2x 633130B                   )       
    [12] => 2x 381130A (23mm)                   
    [13] => 2x 381130A <= REMOVE
)

我试过array_unique在这种情况下不起作用,因为元素不完全相同.任何人都可以帮我如何删除那些重复的元素?

最佳答案
在这种情况下,这将满足您的需求:

  foreach ($array as $value)
  {

    if (FALSE !== strpos($value, '('))
    {

      $string = trim(strtok($value, '('));

      while (FALSE !== $key = array_search($string, $array))
      {
        unset($array[$key]);
      }

    }

  }

它将遍历数组,找到任何具有(作为字符串的一部分的元素,找到任何与字符串匹配的元素(带有额外的空白空间)的元素,然后在找到它时将其删除.

转载注明原文:PHP如何从数组中删除元素 – array_uniqe将无法正常工作 - 代码日志