数组如下所示:
array(
array(5, true, 'Foo'),
array(8, true, 'Bar'),
array(8, true, 'FooBar'),
)
我可以确定第3列的最长字符串长度,而不必迭代数组吗?
在我的例子中,最长的字符串是“FooBar” - 6个字符。
如果内部数组只有字符串元素,我可以max(array_map('strlen', $arr))
,但它有3个项目......
答案 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))));
?>
给出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))