найти наибольшее значение ключа и вернуть другие ключи и соответствующие им значения из многомерного массива в php - PullRequest
0 голосов
/ 10 июня 2019

У меня есть многомерный массив следующего формата.Я пытаюсь напечатать тот массив, который имеет наибольший радиус.Функция, которая должна возвращать детали с наибольшим радиусом.Здесь, например, для Дэвиса он должен вернуть 2-й внутренний массив с радиусом 106 (который имеет максимальный радиус), а для Джона он должен вернуть 0-й массив с радиусом 50.

Я попытался с решением, представленным в этом ссылка .

Array
(
    [0] => Array
        (
            [name] => davis
            [data] => Array
                (
                    [0] => Array
                        (
                            [xaxis] => 445
                            [yaxis] => 447
                            [radius] => 80

                        )

                    [1] => Array
                        (
                            [xaxis] => 468
                            [yaxis] => 447
                            [radius] => 77

                        )

                    [2] => Array
                        (
                            [xaxis] => 409
                            [yaxis] => 199
                            [radius] => 106

                        )

                )

        )
       [1] => Array
        (
            [name] => john
            [data] => Array
                (
                    [0] => Array
                        (
                            [xaxis] => 311
                            [yaxis] => 383
                            [radius] => 50

                        )

                    [1] => Array
                        (
                            [xaxis] => 527
                            [yaxis] => 310
                            [radius] => 21

                        )

                    [2] => Array
                        (
                            [xaxis] => 465
                            [yaxis] => 431
                            [radius] => 48

                        )

                    [3] => Array
                        (
                            [xaxis] => 339
                            [yaxis] => 326
                            [radius] => 43

                        )

                )

        )

)

1 Ответ

2 голосов
/ 10 июня 2019

Фрагмент, я считаю, что радиус уникален, иначе он будет перекрываться

$result = [];
foreach ($arr as $key => $value) {
    // it will map radius as key and whole array as its value
    $temp = array_column($value['data'], null, 'radius');
    // I am fetching max key by which I will fetch data in next step
    $key = max(array_keys($temp));
    // fetching data of max value and saving it for the name
    $result[$value['name']] = $temp[$key];
}
print_r($result);die;

Демо .

Если вы хотите сохранить структуру массива такой, какая она есть,

$result = [];
$i      = 0;
foreach ($arr as $key => $value) {
    $temp               = array_column($value['data'], null, 'radius');
    $key                = max(array_keys($temp));
    $result[$i]['name'] = $value['name'];
    $result[$i]['data'] = $temp[$key];
    $i++;
}
print_r($result);die;

Демо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...