数组是这样的:如何确定某个数组列的最大长度?
array(
array(5, true, 'Foo'),
array(8, true, 'Bar'),
array(8, true, 'FooBar'),
)
我能确定第三列的最长的字符串长度,而不必遍历数组了吗?
在我的例子中,最长的字符串是“FooBar” - 6个字符。
如果内部数组只有字符串元素,我可以做max(array_map('strlen', $arr))
,但它有3项...
数组是这样的:如何确定某个数组列的最大长度?
array(
array(5, true, 'Foo'),
array(8, true, 'Bar'),
array(8, true, 'FooBar'),
)
我能确定第三列的最长的字符串长度,而不必遍历数组了吗?
在我的例子中,最长的字符串是“FooBar” - 6个字符。
如果内部数组只有字符串元素,我可以做max(array_map('strlen', $arr))
,但它有3项...
添加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))));
?>
给出8
(我加了两个ss
来检查)。 array_pop()
关闭最后一个数组元素并返回它,使用array_shift()
获取第一个。
首先,我很确定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))
第二行有语法错误。至少根据此键盘上的测试,[这不起作用](http://codepad.org/Tr2nXf8M)。 – 2012-07-26 23:20:27