关于PHP比较字符串长度的简洁方法请教

$len1='大江东去,浪淘尽,';
$len2='大江东去,浪淘尽,千古风流人物。故垒西边,';
$len3='大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。人生如梦,一尊还酹江月。';
$len7='';
$len4='大江东去,浪淘尽,千古风流人物。';
$len5='大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。';
$len6='大江东去,浪淘尽,千古风流人物。故垒西边,人道是,';
$len8='';

如何一次性比较出以上8个字符串的长度(或者循环比较出),并分别输出以下3组字符串呢?
1、最短的字符串(不含空字符串)
2、第二短的字符串
3、最长的字符串

以下是我写的找出最短字符串的代码(按三个字符串),但是感觉好复杂啊~结果好像也有问题~

$str=$len1<$len2?($len1<$len3?$len1:$len3):($len2<$len3?$len2:$len3);
echo "最短字符串内容如下:" $str;

目前的难点是如果有几组空字符串混杂其中时,如何找出最短的那个非空字符串呢?那么第二短的也就好找了,相对的,最长的好像已经解决了。


$arr1=array(strlen($len1)=>$len1,strlen($len2)=>$len2,strlen($len3)=>$len3); //用循环像这样添加,添加之前判断是否为空
arsort($arr1); //按照键的大小排序
// print_r($arr1);//按照键的大小输出关联数组
$arr2=array_values($arr1);//关联数组转普通数组,
echo $arr2[0]."<br>"; //字符最长的下标是0,第二是1,最小的是数组长度-1
echo $arr2[1]."<br>" ;
echo $arr2[count($arr2)-1]."<br>" ;