从数组中打印出最大值及其键-PHP

时间:2018-09-29 00:55:04

标签: php string foreach

我陷入了无法解决的错误消息:'注意:数组到字符串的转换'我试图打印数组的最大值和键。

<?php
$length_array = array();

foreach ($_SERVER as $key => $value) {
    $length = strlen($value);
    $length_array[$key] = $length;
    echo '<pre>'; 
    print_r($key . " = " . $length . " characters"); 
    echo '</pre>';

}

$max_key = array_keys($length_array, max($length_array));
print_r($max_key . " is longest with " . max($length_array) . " characters");
?>

我得到的答案是:数组最长为444个字符

我该如何解决?

致谢!

2 个答案:

答案 0 :(得分:1)

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";

答案 1 :(得分:0)

问题是$_SERVER包含数组值和字符串值,具体是:

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

在您的情况下,您将无法在此数组上调用strlen(),也无法用返回的字符串来连接array_keys()返回的数组:

Array
(
    [0] => GPG_KEYS
)

您可以使用is_array检查每个项目的类型并进行相应处理。