-3

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

$arr =
大批
(
    [0] => 数组
        (
            ['id'] => 1
            ['title'] => 一项测试
        )

    [1] => 数组
        (
            ['id'] => 4
            ['title'] => 两个测试 xyz
        )

    [2] => 数组
        (
            ['id'] => 2
            ['title'] => fdfdf dfdfdffdfdf
        )

    [3] => 数组
        (
            ['id'] => 3
            ['title'] => fddddđ fffffffff ssss
        )

)

有什么办法让最长的字符串和它的长度在任何$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 ssss'
)

我该怎么办?回复前请仔细看我的更新,谢谢

4

4 回答 4

3
$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";
于 2013-03-07T15:21:14.250 回答
1

这是一个将迭代多维数组并返回它找到的最长字符串数组的版本。改编为 Sean Bright 的代码以保持简单。

 $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" }
于 2013-03-07T15:42:55.330 回答
0
    $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
于 2013-03-07T15:28:04.887 回答
0
$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],
);
于 2013-03-07T15:24:40.673 回答