PHP合并两个数组以数值

问题描述 投票:1回答:1

我有两个数组。

$阵列1:

Array (
  [0] => Array (
      [time] => 100
      [text] => Hello
  )
  [1] => Array (
      [time] => 200
      [text] => World!
  )
  [3] => Array (
      [time] => 300
      [text] => Array1's There
  )
)

和更多...

$古:

Array (
  [0] => Array (
      [time] => 50
      [text] => Hello
  )
  [1] => Array (
      [time] => 150
      [text] => World!
  )
  [3] => Array (
      [time] => 300
      [text] => Array2's There
  )
)

和更多 ...

$ desiredResult:

Array (
  [0] => Array (
      [time] => 50
      [text] => Hello
  )
  [1] => Array (
      [time] => 100
      [text] => Hello
  )
  [2] => Array (
      [time] => 150
      [text] => World
  )
  [3] => Array (
      [time] => 200
      [text] => World
  )
  [4] => Array (
      [time] => 300
      [text] => Array1's There
  )
  [5] => Array (
      [time] => 300
      [text] => Array2's There
  )
)

我需要时间的数值合并两个数组,如果时间的价值是相同的,数组1的数据第一。

php arrays array-merge
1个回答
1
投票

下面的代码,你会得到你想要的结果。

$finalArray = array();
if(count($array1) == count($array2)){
  for ($icount = 0; $icount < count($array1); $icount++) {
    if( ($array1[$icount] < $array2[$icount]) || ($array1[$icount] == $array2[$icount])){
      $finalArray[] = $array1[$icount];
      $finalArray[] = $array2[$icount];
    } else if($array1[$icount] > $array2[$icount]){
      $finalArray[] = $array2[$icount];
      $finalArray[] = $array1[$icount];
    }
  }
}

此外,我已经创建功能,可以让你得到,如果有人数组包含多个值,则其他数组。

function mapArray($array1, $array2, $minCount, $maxCount, $maxCountFrom = ''){
  for ($icount = 0; $icount < $minCount; $icount++) {
    if( ($array1[$icount] < $array2[$icount]) || ($array1[$icount] == $array2[$icount])){
      $finalArray[] = $array1[$icount];
      $finalArray[] = $array2[$icount];
    } else if($array1[$icount] > $array2[$icount]){
      $finalArray[] = $array2[$icount];
      $finalArray[] = $array1[$icount];
    }
  }

  if(!empty($maxCountFrom)){
    if($maxCountFrom == '1'){
      for ($jcount = $icount; $jcount < $maxCount; $jcount++) {
        $finalArray[] = $array1[$jcount];
      }
    } else if($maxCountFrom == '2'){
      for ($jcount = $icount; $jcount < $maxCount; $jcount++) {
        $finalArray[] = $array2[$jcount];
      }
    }
  }
  return $finalArray;
}

$array1Count = count($array1);
$array2Count = count($array2);
if($array1Count > $array2Count){
  $result = mapArray($array1, $array2, $array2Count, $array1Count, '1');
} elseif($array1Count < $array2Count){
  $result = mapArray($array1, $array2, $array1Count, $array2Count, '2');
} elseif($array1Count == $array2Count){
  $result = mapArray($array1, $array2, $array2Count, $array2Count);
}

在此功能中,您可以通过2 array,通过count of the both array计数minimummaximum算的,最后一个参数是定义array has maximum value,并从该数组提取所有剩余值的final array

© www.soinside.com 2019 - 2024. All rights reserved.