在多维阵列的第一维中交换位置



所以我有以下数组: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;
}

最新更新