【问题标题】:How to combine multiple arrays of duplicate first element (Combine only second element) in PHP?如何在 PHP 中组合多个重复的第一个元素数组(仅组合第二个元素)?
【发布时间】:2022-11-27 16:06:46
【问题描述】:

我有一个数组数组,其中每个数组中有 2 个值,第一个是 personID,第二个是 Skill,同一个人有多种技能,我需要所有相同的技能才能添加到具有单个人 ID 的数组中。 我不知道该怎么做。

具有重复 ID 的原始数据

$data = array(
    array(1, "Writing"),
    array(3, "Designing"),
    array(1, "Problem Solving"),
    array(3, "Communication"),
    array(5, "Writing"),
    array(5, "Planning and organising"),
    array(5, "Communication"),
    array(1, "Designing"),
    array(2, "Leadership"),
    array(2, "Communication"),
    array(2, "Designing")
);

需要具有唯一人员 ID 的数据格式

$data = array(
    array(1, "Writing", "Problem Solving", "Designing"),
    array(3, "Designing", "Communication"),
    array(5, "Writing", "Planning and organising", "Communication"),
    array(2, "Leadership", "Communication", "Designing")
)

【问题讨论】:

    标签: php array-merge array-combine


    【解决方案1】:

    您可以遍历输入数组 $data 并构建一个新数组 - 在本例中为 $dataCombined - 具有组合的第二个值:

    <?php
    $firstValues = array();  // array of first values
    $dataCombined = array();   // new array with the combined data
    
    // loop through array $data
    for($i=0;$i<count($data);$i++)
    {
    // first value
    $firstValue = array_values($data[$i])[0];
    // second value
    $secondValue = array_values($data[$i])[1];
    
      // write first values in array $firstValues if missing and fill new array $dataCombined
      if(!in_array($firstValue,$firstValues))
      {
      $firstValues[] = $firstValue ;
      $dataCombined[] = array($firstValue, $secondValue);
      }
      else
      {
        // if first values match combine second values in a new loop
        for($j=0;$j<count($dataCombined);$j++)
        {
        $duplicateFirstValue = array_values($dataCombined[$j])[0];
        $otherSecondValue = array_values($dataCombined[$j])[1]; 
        // case first values match
        if($firstValue === $duplicateFirstValue)
        {
        // fill new array with combined second data
        $dataCombined[$j][1] = $otherSecondValue.",".$secondValue;
        }
        }
      }
    }
    print_r($dataCombined);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 1970-01-01
      • 2018-02-01
      • 2022-11-12
      • 1970-01-01
      • 2013-09-25
      • 2022-12-07
      • 2016-07-27
      • 1970-01-01
      相关资源
      最近更新 更多