Amigo não é uma questão de PAGAR, é que eu não vejo mais do que justo uma recompensa, e não faço nada por obrigação é de coração mesmo, pois eu preciso muito mesmo desse código e eu agradeço por ter respondido, fico muito grato, mais voltando ao assunto, eu vi que vc criou um laço mais creio que não é bem isso que o começo do código pede, eu creio que seria um foreach o ideal, olha até onde cheguei, ve se pode me ajudar a terminar:
<?
function tamanho($conexao, $arquivo){
if($conexao == "56"){$kbps = "56 Kbps";}
if($conexao == "128"){$kbps = "128 Kbps";}
if($conexao == "256"){$kbps = "256 Kbps";}
if($conexao == "512"){$kbps = "512 Kbps";}
if($conexao == "1024"){$kbps = "1 Mbps";}
if($conexao == "2048"){$kbps = "2 Mbps";}
if($conexao == "4096"){$kbps = "4 Mbps";}
if(preg_match("/ B/", $arquivo)){$bytes = "1";}
if(preg_match("/ KB/", $arquivo)){$bytes = "1024";}
if(preg_match("/ MB/", $arquivo)){$bytes = "1048576";}
if(preg_match("/ GB/", $arquivo)){$bytes = "1073741824";}
$arquivo = str_replace(",", ".", $arquivo);
$arquivo = preg_replace("/B|KB|MB|GB/", "", $arquivo);
$segundos = ($arquivo * $bytes) / ($conexao * 1000 / 8);$unidades = array("segundo" => "60", "minuto" => "60", "hora" => "24", "dia" => "365", "ano" => time());$tempo = "";if($segundos > 0 and $segundos < .001){$tempo = "1 segundo";}else{if($segundos < 1){$tempo = round($segundos * 1000)." segundos";}else{if($segundos < 60){$tempo = number_format($segundos, 2, ".", "")." segundos";}
else{
$segundos = round($segundos);
foreach($unidades as $chave => $valor){
$n = $segundos % $valor;
$segundos -= $n;
$segundos /= $valor;
$tempo .= "$n $chave".($n!=1?"s":"").", ";
if($segundos == 0){break;}
}
}}}
return"<b>$kbps</b> - $tempo";}
echo tamanho("2048", "99999 MB");
//Valor retornado: 2 Mbps - 36 segundos, 46 minutos, 17 horas, 4 dias
//O objetivo agora é virar a variável dos avessos, pois é para começar com os "4 dias" e terminar nos "36 segundos", mais não estou conseguindo transformar em array, pois está dentro do foreach, se eu colocar o return dentro ele vai dar um break e não vai printar todo o resultado.
?>
Valeu mano, quebrei a cabeça mas consegui:
$n = $segundos % $valor;
$segundos -= $n;
$segundos /= $valor;
$a1[] = "$n $unidade".($n !=1 ? "s" : "")."";
$a2 = array_reverse($a1);
$a3 = array_slice($a2, 0, 3);
if(count($a1) > 2){array_splice($a3, 1, 0, ", ");}
array_splice($a3, -1, 0, " e ");
if($segundos == 0){break;}
Coloquei um laço no final, deu tudo certo, valew, abraço.



Postagens
Male
