Arhn - архитектура программирования

перестановка позиций в первом измерении многомерного массива

Итак, у меня есть следующий массив: http://pastebin.com/raw.php?i=AazcQUbG

В части кода за пределами приведенной ниже функции я перебираю этот конкретный упорядоченный массив (упорядоченный по «team_points» второго измерения) и определяю, есть ли связь в «team_points». Если определяется ничья в team_points, я проверяю tie_breaker каждого.

Я хочу, чтобы переключение порядка первого измерения имело место, если существует связь, а 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;
}

  • Вы не сравниваете значения ни в одной точке. Как они могут переключаться, если находятся в том или ином относительном состоянии? Я собираюсь попробовать ввести альтернативный метод. 26.10.2012
  • Я делаю это в коде вне функции. Я помещу это в исходный пост. 26.10.2012
  • может ли случиться, что более двух команд используют один и тот же team_points ? 26.10.2012
  • Я видел это только в нескольких соревнованиях по пересеченной местности за последние 15 лет, где существует трехсторонняя ничья. но вы правы, такое бывает. 26.10.2012

Ответы:


1

Я думаю, что это может работать лучше:

Редактировать. Эта функция предназначена для запуска всего набора данных с использованием ваших полей сортировки как $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;
}
26.10.2012
  • Я действительно ценю усилия, но это не то, что я искал. Кроме того, эта функция не работает как есть и возвращает пустые массивы. 26.10.2012
  • @user1645914 user1645914 Я думаю, вы должны опубликовать, как вы используете эту функцию. Как я уже говорил выше, я не понимаю, как ваша функция может что-то сравнивать. Если моя функция не работает, мне хотелось бы посмотреть, какие данные вы ей даете, что приводит к ее сбою. 26.10.2012
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..