2016-07-05 2 views
-3

я решала некоторую математические матрицы проблемы, и я получил идею написать функцию PHP, которая принимает JSON закодированного массив и:PHP функция, которая принимает JSON закодированного массива

1) Сортировать первую строку данной матрицы (2D массив) в порядке возрастания. Во время сортировки другие строки должны перемещаться, как они прикреплены к первой строке (вы перемещаете все столбцы при сортировке первой строки).

2) Найдите наибольшее количество в отсортированном 2D-массиве, кроме первой строки. Затем вычислите сумму координат наибольшего числа (координаты начинаются с [1, 1]).

- Первая строка только для сортировки, оно не используется для расчетов

- Если наибольшее количество существовать более чем в одной строке, то все координаты этого самого большого числа должны быть добавлены к сумме)

Пример матрицы (2D массива) является:

Решение примере имеет следующий вид:

6 3 9 => 3 6 9 => 3 6 9

9 1 6 => 1 9 6 => 1 6 => 9 (2, 2) и 9 (3, 3) => (2 + 2) + (3 + 3) => 10

4 7 9 => 7 4 9 => 7 4

Но, на данный момент, я начинаю на PHP, и такой код выше моего навыка, поэтому мне нужна помощь.

Первая часть - это массив PHP, но как написать такой массив со значениями, найденными с координатами в качестве индекса. Как вы видите, я застрял в начале проблемы!

+0

Так же, как он говорит: Создание функции PHP, которая принимает JSON закодированного массив, сортирует первый ряд в порядке возрастания, вторая и третья строка следует столбцам в первой строке, а затем вычислить сумму координат наибольшего количества в. – Bengall

ответ

1

Чтобы отобразить вид первой строки до остальных строк, вы можете сначала отсортировать его самостоятельно с asort сохранить ключевую ассоциацию:

$input = [  // or for PHP < 5.4: $input = array(
    [6,3,9], //      array(6,3,9),    
    [9,1,6], //      array(9,1,6), 
    [4,7,9]  //      array(4,7,9) 
];    //     ); 

$sort_keys = $input[0]; 
asort($sort_keys); 

Затем use отсортированный массив в array_map вернуть отсортированный версию ваш входной массив.

$sorted = array_map(function($row) use ($sort_keys){ 
    foreach ($sort_keys as $key => $value) { 
     $result[] = $row[$key]; 
    } 
    return $result; 
}, $input); 
+0

Всякий раз, когда я пытаюсь выполнить эхо-результат, я получил фатальную ошибку. – Bengall

+0

'$ result' - это массив, поэтому вы не должны его эхо-эхо, но это должно просто дать вам выражение: array to string conversion, а не фатальная ошибка. Неустранимая ошибка, вероятно, связана с тем, что ваша PHP-версия устарела и не поддерживает синтаксис [короткий массив] (http://php.net/manual/en/language.types.array.php##language.types.array. синтаксис). Имейте в виду, что это только для решения первой части вашей проблемы, когда вы сказали, что застряли. –

+0

Я пытался работать над остальными, но в основном просто идеи, которые я не знаю, как реализовать в коде, поэтому, если вы можете помочь мне с остальными, я буду благодарен! Я понял, что это приведет к тому, что массив уже отсортирован, когда я пытаюсь эхо. – Bengall

Смежные вопросы