terça-feira, 28 de agosto de 2012

Sprintf no PHP

Essa é para vc que é novo no PHP ou que pretende tirar a certificação ZCE e esta com receio sobre umas funções pouco usadas em seu dia a dia... O sprintf é uma delas.... Opa opa espera ai? O sprintf não é um printf? Sim, mas printf "echoa" o resultado, enquanto que sprintf retorna. 

Então significa que entendendo o printf eu vou entender o sprintf?
 Sim! 

Vamos ao entendimento então!


 A função recebe basicamente 2 argumentos, o primeiro é o formato que a string deve aparecer e o segundo a própria string, por exemplo:

printf("Eu tenho %d anos", 23);  


Veja que %d representa um valor inteiro, se você tentar usar uma float ou um real ele não irá funcionar, veja uma tabela com alguns dos tipos aceitos:

TipoDescrição
%bArgumento considerado um inteiro; apresentado com um numero binário
%cArgumento considerado um inteiro; apresentado com um valor correspondente em ASCII
%dArgumento considerado um inteiro; apresentado com um numero decimal
%fArgumento considerado numero de ponto flutuante; apresentado com um numero de ponto flutuante
%oArgumento considerado um inteiro; apresentado com um numero octal
%sArgumento considerado um string; apresentado com um numero string
%uArgumento considerado um inteiro; apresentado com um numero decimal não assinado
%xArgumento considerado um inteiro; apresentado com um numero hexadecimal em letras minusculas
%XArgumento considerado um inteiro; apresentado com um numero hexadecimal em letras maiusculas


Caso você queira utilizar mais de um valor pode passa os argumentos separados por virgulas repeitando a sequencia que foram declarados:
  1. <?php 
  2.     printf("Eu sou o %s e tenho %d anos""PV", 23);  
  3. ?>  
Legal e tudo isso pode ser aplicado com o sprintf ? Sim, mas lembre-se, ele retorna o valor e não imprime.


Tudo muito legal não é? Se vc veio aqui para garantir que esta pronto para ZCE então lá vai um QUIZ tipico da prova para vc responder:


What will the following code print out?
  1. <?php  
  2.     echo sprintf('"%4d"', ord('a'));  
  3. ?>  
E ai sabe a resposta? Em breve eu coloco aqui, com uma explicação.
[Resposta: " 97"]
[Explicação:  No format o número 4 representa um espaço em branco(a equerda pq é positivo, se negativo seria a direita) as aspas são apenas para exibir o d e o % vc ja conhece e por fim a função ord() retorna o valor ASCII do caracter, e o valor ASCII de
a é = 97]

2 comentários:

  1. Nossa vou ter que decorar todas as representações ASCII do alfabeto para não errar uma questão dessa na prova da ZEND? Poxa fiquei preocupado.

    ResponderExcluir
    Respostas
    1. Marco fique trânquilo pois na prova provavelmente vc teria respostas multipla escolha tipo assim:

      a) " a"
      b) " 97"
      c) "10"
      d) "000a"

      Vc teria que trabalhar por eliminação concorda? o "a" não pode ser pois sabemos que ord gera o ASCII do valor então n seria letra a resposta, o "c" também não poderia estar certo pois sabemos que um número no format(4) representa um espaço, logo só restou a resposta "b" que é a correta concorda? Espero ter ajudado.

      Excluir