-3

こんにちは、みんな !私はこのような多次元配列を持っています:

$ arr =
配列
((
    [0]=>配列
        ((
            ['id'] => 1
            ['title']=>1つのテスト
        )。

    [1]=>配列
        ((
            ['id'] => 4
            ['title']=>2つのテストxyz
        )。

    [2]=>配列
        ((
            ['id'] => 2
            ['タイトル']=>fdfdf dfdfdffdfdf
        )。

    [3]=>配列
        ((
            ['id'] => 3
            ['title']=>fddddđfffffffffssss
        )。

)。

任意の要素で最長の文字列とその長さを取得する方法はあります$array['title']か?「fddddđfffffffffssss」とその長さを取得したい。とにかく教えてください:最長の文字列を取得し、最長の長さの文字列を取得し、その両方を行います。ありがとう 。

方法はわかります:max(array_map('strlen', $ary)); <==ですが、単一配列に使用されます。このトピックでは、$arr['title']で検索する方法があればいいのですが。

アップデート :

しかし、私が取得したい場合:

  1. 最長の文字列+内部の最長の文字列$arr['title']
  2. 内部$arr['id']の最大の「id」値の数値、最大の「id」の値の数値は、$ arr[1]['id']内の4になりました。

<==そしてそれらはすべて次のような新しい配列に割り当てられます:

    配列(
         'id' => 4、
         'title'=>'fddddđfffffffffssss'
)。

どうすればいいですか?あなたが答える前に私の更新を注意深く見てください、ありがとう

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

これは、多次元配列を反復処理し、見つかった最長の文字列の配列を返すバージョンです。物事をシンプルに保つためにSeanBrightのコードに適合。

 $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
$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 に答える
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 に答える