大家好! 我有一个像这样的多维数组:
$arr = Array ( [0] => Array ( ['id'] => 1 ['title'] => one test ) [1] => Array ( ['id'] => 4 ['title'] => two test xyz ) [2] => Array ( ['id'] => 2 ['title'] => fdfdf dfdfdffdfdf ) [3] => Array ( ['id'] => 3 ['title'] => fddddđ fffffffff ssss ) )
有没有办法在任何$array['title']
元素中获取最长的字符串及其长度?
我想获得“fddddđffffffffssss”及其长度。
请告诉我任何方式:获取最长的字符串,获得最长的字符串和两者。谢谢。
我看到了一种方法:max(array_map('strlen', $ary));
< ==但它用于单个数组,
在这个主题中我希望有任何方法可以在$ arr ['title']
更新:
但如果我想得到:
$arr['title']
$arr['id']
内最大的“id”值编号,$ arr [1] ['id'] < ==并将所有这些内容分配到新的数组中:
array( 'id' => 4, 'title' => 'fddddđ fffffffff ssss' )
我该怎么办? 在回答之前仔细查看我的更新,谢谢
答案 0 :(得分: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";
答案 1 :(得分: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" }
答案 2 :(得分: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],
);
答案 3 :(得分: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