繁体   English   中英

在多维数组的第一维上交换位置

[英]swapping positions in first dimension of a multidimensional array

因此,我得到了以下数组: http : //pastebin.com/raw.php?i=AazcQUbG

在下面函数之外的代码的一部分中,我遍历了这个特定的有序数组(由第二维的“ team_points”排序),并确定“ team_points”中是否有联系。 如果确定了team_points中的并列,我将检查每个的并列。

我希望如果存在领带并且第一维中第二项的tie_breaker小于第一项的领带,那么将进行第一维顺序切换。

以下功能不强制切换。 是否有人可以帮助我弄清楚,为什么我不能在这阵开关的第一维的位置和建议的方式来实现这一目标?

function array_swap($key1, $key2, $array) {
  $newArray = array ();
  foreach ($array as $key => $value) {
    if ($key == $key1) {
      $newArray[$key2] = $array[$key2];
    } elseif ($key == $key2) {
      $newArray[$key1] = $array[$key1];
    } else {
      $newArray[$key] = $value;
    }
  }
  return $newArray;
}

我认为这可能会更好:

编辑:此功能旨在使用您的排序字段作为$ key1和$ key2在您的整个数据集上运行

function array_swap($key1, $key2, $array) {
  $newArray = array ();

  // I chose a for loop because each iteration deals with two elements
  for ($i = 1; $i < count($array); $i++) { 
    if ($array[$i][$key1] == $array[$i - 1][$key1]){
      if ($array[$i][$key2] < $array[$i - 1][$key2]) { //money-condition
        $newArray[$i - 1] = $array[$i];
        $newArray[$i]     = $array[$i - 1];
        $i++
      } else {
        $newArray[$i - 1] = $array[$i - 1];
      }
    } else {
      $newArray[$i - 1] = $array[$i - 1];
    }
  }

  // there is special condition if that last two elements are flipped
  // and $i was incremented, in which this last step won't be required
  if ($i < count($array)){
    $newArray[$i] = $array[$i];
  }
  return $newArray;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM