Как найти наибольшее число, самая длинная строка, наибольшее количесвто элементов в массиве PHP

Array

(
    [0] => Array

        (
            [0] => true
            [1] => 515
            [2] => Array

                (
                    [0] => zzbFXOV4wZQRRbNgvLj0sgsI3DiKJu5LfU2bfkSbB80dVZ8B05ybTOEOiYv5Hsp

                    [1] => Array
                        (
                            [0] => 3706
                            [1] => 95.65
                            [2] => 7927
                            [3] => 6560
                            [4] => true
                        )

                    [2] => 0ShfxbVHxYOdviCtgeIqOv0gMbFDhKGpGilDASf2KDLSVOAOhRPzZEU0q2aYD8UnxbedyNk9pNni2Foxe5ldjUaYC9N
                    [3] => false
                    [4] => true
                )

            [3] => ofqT02x0nJI3bAws891YLm42BU1e2wf8vvZI
            [4] => wneV2leNMsAgHA8pT5o9FAWOl1uDDVkVl7xNMAqT8zBk
        )

    [1] => 1668
    [2] => 3287
    [3] => 64.1
)

Есть вот такой массив, подскажите как найти в нем наибольшее число, самую длинную строку, и массив содержащий самое большое количество элементов.

При этом массив всегда генерируется рандомно, у него может быть любая вложенность и любое количество элементов.


Ответы (1 шт):

Автор решения: Вадим Александру

Пожалуйста

$array = [
    0,
    [
        55,
        "abc",
        [
            'acaaaaza',
            [11111]
        ],
        "abcds",
        0
    ]
];

function calc($array, $maxNumber = null, $maxString = null, $maxArray = null) {
    foreach ($array as $value) {

        if(is_string($value)) {
            if($maxString === null || (strlen($maxString) < strlen($value))) {
                $maxString = $value;
            }
        }

        if(is_numeric($value)) {
            if($maxNumber === null || $maxNumber < $value) {
                $maxNumber = $value;
            }
        }
        if(is_array($value)) {
            if($maxArray === null || (count($maxArray) < count($value))) {
                $maxArray = $value;
            }
            list($maxNumber, $maxString, $maxArray) =  calc($value, $maxNumber, $maxString, $maxArray);
        }

    }
    return [$maxNumber, $maxString, $maxArray];
}

$result = calc($array);

echo "Найбольшее число: " . $result[0] . PHP_EOL;
echo "Найдлиннейшая строка: " . $result[1] . PHP_EOL;
echo "Массив содержащий самое большое количество элементов: " . count($result[2]) . PHP_EOL;

/*
 * Вывод
Найбольшее число: 11111
Найдлиннейшая строка: acaaaaza
Массив содержащий самое большое количество элементов: 5
 */
→ Ссылка