如何确定某个数组列的最大长度?

时间:2012-07-26 23:00:12

标签: php arrays string

数组如下所示:

array(
  array(5, true, 'Foo'),
  array(8, true, 'Bar'),
  array(8, true, 'FooBar'),
)

我可以确定第3列的最长字符串长度,而不必迭代数组吗?

在我的例子中,最长的字符串是“FooBar” - 6个字符。

如果内部数组只有字符串元素,我可以max(array_map('strlen', $arr)),但它有3个项目......

2 个答案:

答案 0 :(得分:2)

array_map('array_pop', $arr)添加到混音中:

<?php

$arr = array(
  array(5, true, 'Foo'),
  array(8, true, 'Bar'),
  array(8, true, 'FooBarss')
);

print_r(max(array_map('strlen', array_map('array_pop', $arr))));

?>

http://codepad.org/tRzHoy7Z

给出8(在我添加两个ss后检查)。 array_pop()关闭最后一个数组元素并返回它,使用array_shift()获取第一个数组元素。

答案 1 :(得分:2)

首先,我非常确定max函数遍历整个数组。但如果您使用它就可以了,那么您可以定义自己的比较函数并传递它。

function cmp($a, $b) {
    if (strlen($a[2]) == strlen($b[2])))
        return 0;
    return (strlen($a[2]) < strlen($b[2])) ? -1 : 1;
}

max(array_map('cmp', $arr))