我需要在比较后获取数组中包含的值的strlen
like $a = ['0000', '00', '000000'];
所以更长的长度为6,即[2]或'000000'
首先比较每个值的长度,然后抓住更大的值。
我正在使用的代码是
function getzeros(){
$val = explode('1',100101);
foreach($val as $key => $value){
if($value != '')
I think some logic will come here....
}
}
getzeros();
答案 0 :(得分:1)
$a = ['0000', '00', '000000'];
$b = [];
foreach ($a as $key => $value) {
array_push($b, strlen($value));
}
$maxKey = max(array_keys($b));
echo $a[$maxKey];
答案 1 :(得分:1)
我认为这就是你想要的
<?php $a = ['0000', '00', '000000'];
echo "The long string length is " .max(array_map('strlen',$a));
?>
答案 2 :(得分:0)
如果我理解正确,你就会找到这样的东西:
<?php
$a = ['0000', '000000', '000'];
function getzeros($val) {
$highest = 0;
$position = 0;
$answer = '';
foreach($val as $key => $value){
if($value != '') {
if (strlen($value) > $highest) {
$answer = $value;
$highest = strlen($value);
$position = $key;
}
}
}
echo "The longest string was '" . $answer . "', with a length of " . strlen($answer) . ", at index " . $position;
// The longest string was '000000', with a length of 6, at index 1
}
getzeros($a);
这将返回数组$a
中最长的字符串,并返回其索引。这里的关键是设置一个初始$highest
变量来跟踪最高strlen()
,然后在循环期间,只要数组中的元素具有更高的strlen()
,就会覆盖此值。
我已经创建了一个3v4l来演示 here 。
希望这有帮助! :)
答案 3 :(得分:0)
我认为您也可以使用usort()
来使其正常运行:
$arr = explode('1',100101000010);
usort($arr,function($a,$b) {
return (strlen($a) <= strlen($b));
});
print_r($arr[0]);
排序为您提供:
Array
(
[0] => 0000
[1] => 00
[2] => 0
[3] => 0
[4] =>
)
然后$arr[0]
最终成为0000
;