如何在多维数组中查找字符串长度最长的数组



大家好!我有一个像这样的多维数组:

$arr=大堆([0]=>数组(['id']=>1['title']=>一次测试)[1] =>阵列(['id']=>4['title']=>两个测试xyz)[2] =>阵列(['id']=>2['title']=>)[3] =>阵列(['id']=>3['title']=>))

有没有办法让我们得到任何$array['title']元素中最长的字符串及其长度?我想得到"fddddŞfffffffff-ssss"及其长度。请告诉我任何一种方法,让:得到最长的字符串,得到最长长度的字符串,以及两者。谢谢

我想办法:max(array_map('strlen', $ary));<==但它用于单个阵列,在这个主题中,我希望有任何方法可以在$arr['title']中找到

更新:

但如果我想得到:

  1. 最长字符串+$arr['title']内最长字符串
  2. $arr['id']中最大的"id"值编号,现在最大的"id"值编号是$arr[1]['id']中的4

<==并且所有这些都被分配给一个新的数组,如:

阵列('id'=>4,'title'=>'fddddŞfffffffff-sssss')

我该怎么办?在您回答之前,请仔细查看我的更新,感谢

$max = '';
$maxlen = 0;
foreach ($arr as $elm) {
    $len = strlen($elm['title']);
    if ($len > $maxlen) {
        $maxlen = $len;
        $max = $elm['title'];
    }
}
echo "The longest string is "$max" and it is $maxlen chars long.n";

这是一个版本,它将迭代多维数组,并返回它找到的最长字符串的数组。改编自肖恩·布莱特的代码,使事情变得简单。

 $arr = array(
    "0" => array(
            'id' => 1,
            'title' => "one test"
        ),
    "1" => array(
            'id' => 2,
            'title' => "two test xyz"
        ),
    "2" => array(
            'id' => 3,
            'title' => "fdfdf dfdfdffdfdf"
        ),
    "3" => array(
            'id' => 4,
            'title' => "fddddđ fffffffff ssss"
       )
);
function longest_string(&$arr, &$max='',&$maxlen=false){
    foreach ($arr as $elm=>$val) {
        $len = strlen($val);

       if ($len > $maxlen) {
            $maxlen = $len;
            $max = $arr;
        }
        if( is_array($val) ){
            longest_string($val, $max, $maxlen);
        }
    }
    return $max;
}
echo  var_dump(longest_string($arr1));
// array(2) { ["id"]=> int(4) ["title"]=> string(22) "fddddđ fffffffff ssss" }
    $string="";
    foreach($arr as $list)
    {
      $string=strlen(list['title'])>strlen($string)?ist['title']:$string;
    }
    echo $string;
    echo strlen($string)
you can find largest string also string length try it
$maxlen = 0;
$idxMax = null;
foreach($arr as $idx => $elem) {
  if(strlen($elem['title']) > $maxlen)
    $idxMax = $idx;
}
printf('Longest string: "%s" (%d), at index %d',
  $arr[$idxMax]['title'],
  strlen($arr[$idxMax]['title']),
  $idxMax);

要回答更新后的问题,请使用$arr[$idxMax]['id']。如果您希望数组包含字符串及其索引,只需将其分配给一个新变量:

$longestEntry = $arr[$idxMax];

要将最高ID与最长字符串组合,请使用:

$maxlen = 0;
$maxId = $arr[0]['id']; // assuming array has at least one element
$idxMax = null;
foreach($arr as $idx => $elem) {
  if(strlen($elem['title']) > $maxlen)
    $idxMax = $idx;
  $maxId = max($elem['id'], $maxId);
}
$max = array(
  'id' => $maxId,
  'title' => $arr[$idxMax],
);

相关内容

  • 没有找到相关文章

最新更新