比较数组中包含的值的长度并获得更大的值

时间:2017-06-29 03:48:52

标签: php arrays

我需要在比较后获取数组中包含的值的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();

4 个答案:

答案 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;