Вывести наибольшее значение и его ключ из массива - PHP - PullRequest
0 голосов
/ 29 сентября 2018

Я застрял с сообщением об ошибке, которое я не могу обойти: «Замечание: преобразование массива в строку» Я пытаюсь вывести наибольшее значение и его ключ массива.

<code><?php
$length_array = array();

foreach ($_SERVER as $key => $value) {
    $length = strlen($value);
    $length_array[$key] = $length;
    echo '<pre>'; 
    print_r($key . " = " . $length . " characters"); 
    echo '
';} $ max_key = array_keys ($ length_array, max ($ length_array));print_r ($ max_key. "самое длинное с". max ($ length_array). "символы");?>

Ответ, который я получаю: Массив самый длинный с 444 символами

Как мне обойти это?

С уважением!

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Проблема в том, что $_SERVER содержит значения массива, а также строковые значения, а именно:

[argv] => Array
    (
        [0] => /run_dir/repl.php
    )

Вы не сможете вызвать strlen() для этого массива, и вы не сможетедля конкатенации массива, возвращаемого array_keys(), со строками при его возврате, в вашем случае:

Array
(
    [0] => GPG_KEYS
)

Вы можете проверить тип каждого элемента, используя is_array и обработать соответственно.

0 голосов
/ 29 сентября 2018

array_keys() возвращает массив.Если вы ожидаете, что только один ключ будет иметь это значение, вы можете использовать array_search() вместо:

$server  = array_map("strlen", $_SERVER);
$max     = max($server);
$max_key = array_search($max, $server);

echo "$max_key is longest with $max characters";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...