【问题标题】:PHP how to remove duplicate or equal array value and append the data in an arrayPHP如何删除重复或相等的数组值并将数据附加到数组中
【发布时间】:2018-09-14 13:15:59
【问题描述】:

我有一个数组,每个数组有 4 个数据,我想要完成的是删除 重复/相等 tag_id 的值并将 tag_images 放在/附加在一起 相同的 tag_id。我也使用了array_unique,但我不知道放在哪里。

我的数组有一个 tag_id、tag_slug、tag_color 和 tag_images(array)。除了 tag_images 之外,最后 2 个数组具有相同的数据,我想将这些数据合并为一个并将 tag_images 放入一个数组中。 示例:

array(4) {
  [0]=>
  array(4) {
    ["tag_id"]=> int(25)
    ["tag_slug"]=> string(5) "green"
    ["tag_color"]=> string(7) "#81d742"
    ["tag_images"]=> array(1) {
      [0]=> string(75) "http://localhost/mysite/wp-content/uploads/2018/08/long-sleeve-tee.jpg"
    }
  }
  [1]=>
  array(4) {
    ["tag_id"]=> int(23)
    ["tag_slug"]=> string(3) "red"
    ["tag_color"]=> string(7) "#dd3333"
    ["tag_images"]=> array(1) {
      [0]=> string(69) "http://localhost/mysite/wp-content/uploads/2018/08/vneck-tee.jpg"
    }
  }
  [2]=>
  array(4) {
    ["tag_id"]=> int(23)
    ["tag_slug"]=> string(3) "red"
    ["tag_color"]=> string(7) "#dd3333"
    ["tag_images"]=> array(1) {
      [0]=> string(66) "http://localhost/mysite/wp-content/uploads/2018/08/beanie.jpg"
    }
  }
}

输出:

array(4) {
  [0]=>
  array(4) {
    ["tag_id"]=>
    int(25)
    ["tag_slug"]=>
    string(5) "green"
    ["tag_color"]=>
    string(7) "#81d742"
    ["tag_images"]=>
    array(1) {
      [0]=>
      string(75) "http://localhost/mysite/wp-content/uploads/2018/08/long-sleeve-tee.jpg"
    }
  }
  [1]=>
  array(4) {
    ["tag_id"]=>
    int(23)
    ["tag_slug"]=>
    string(3) "red"
    ["tag_color"]=>
    string(7) "#dd3333"
    ["tag_images"]=>
    array(1) {
      [0]=>
      string(66) "http://localhost/mysite/wp-content/uploads/2018/08/beanie.jpg"
      [1]=>
      string(69) "http://localhost/mysite/wp-content/uploads/2018/08/vneck-tee.jpg"
    }
  }
}

【问题讨论】:

  • 到目前为止你有没有尝试过?
  • 如果您不向我们展示您迄今为止的尝试,我们将无法帮助您

标签: php


【解决方案1】:

您可以使用array_merge_recursive()

或者从这个answer使用这个函数

function my_array_merge(&$array1, &$array2) {
    $result = Array();
    foreach($array1 as $key => &$value) {
        $result[$key] = array_merge($value, $array2[$key]);
    }
    return $result;
}
$array = my_array_merge($array1, array2);
print_r($array);

【讨论】:

    【解决方案2】:

    我会迭代主数组并构建第二个。

    $mainArray = array
    (
        array("tag_id"      => 25,
            "tag_slug"      => "green",
            "tag_color"     => "#81d742",
            "tag_images"    => array("http://localhost/mysite/wp-content/uploads/2018/08/long-sleeve-tee.jpg")
        ),
        array("tag_id"      => 23,
            "tag_slug"      => "red",
            "tag_color"     => "#dd3333",
            "tag_images"    => array("http://localhost/mysite/wp-content/uploads/2018/08/vneck-tee.jpg")
        ),
        array("tag_id"      => 23,
            "tag_slug"      => "red",
            "tag_color"     => "#dd3333",
            "tag_images"    => array("http://localhost/mysite/wp-content/uploads/2018/08/beanie.jpg")
        )
    );
    
    $freshArray = array();
    foreach ($mainArray as $value)
    {
        $key = array_search($value['tag_id'], array_column($freshArray, 'tag_id'));
        if (false === $key)
            $freshArray[] = $value;
        else
            $freshArray[$key]['tag_images'][] = $value['tag_images'][0];
    }
    var_dump($freshArray);
    

    输出:

    array (size=2)
      0 => 
        array (size=4)
          'tag_id' => int 25
          'tag_slug' => string 'green' (length=5)
          'tag_color' => string '#81d742' (length=7)
          'tag_images' => 
            array (size=1)
              0 => string 'http://localhost/mysite/wp-content/uploads/2018/08/long-sleeve-tee.jpg' (length=70)
      1 => 
        array (size=4)
          'tag_id' => int 23
          'tag_slug' => string 'red' (length=3)
          'tag_color' => string '#dd3333' (length=7)
          'tag_images' => 
            array (size=2)
              0 => string 'http://localhost/mysite/wp-content/uploads/2018/08/vneck-tee.jpg' (length=64)
              1 => string 'http://localhost/mysite/wp-content/uploads/2018/08/beanie.jpg' (length=61)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2020-03-22
      • 2021-06-19
      • 2023-03-07
      • 2021-09-30
      • 1970-01-01
      相关资源
      最近更新 更多