Para comparar strings em uma função do PHP , você pode geralmente usam uma avaliação simples, como " if ($ string1 == string2 $ ) . " Às vezes , no entanto, duas cadeias de caracteres em uma função PHP pode ter diferenças sutis entre eles --- uma consequência da forma como o PHP trata variáveis , porque nenhum tipo de dados é armazenado com a variável , PHP permite comparações de strings , mesmo quando uma comparação de string seria inapropriado e às vezes exibe um comportamento estranho ao tentar verificar se há diferenças entre duas cordas. PHP Typing Variável
linguagens de programação, como regra, pode ser " fortemente " ou " fraco " digitado. Em uma linguagem fortemente tipada , as variáveis têm um tipo explícito --- como " inteiro " ou " cadeia ". PHP é uma linguagem fracamente tipada , a variável " $ var1 = 1.0" pode ser tratado como um inteiro , um número de ponto flutuante (se multiplicado por um decimal , por exemplo) ou uma string ("." Quando concatenadas com o operador ) dependendo de como ele é usado . PHP faz muito pouco corrente variável , que geralmente é útil porque proporciona flexibilidade adicional e elimina a necessidade de o elenco. Por outro lado , em determinadas circunstâncias , isso pode causar um comportamento inesperado em sua programação.
Corda Valores e Fundição
PHP suporta o uso de fundição --- convertendo uma variável expressamente de um tipo para outro --- incluindo o tipo de variável entre parênteses antes da variável é inicializada . Por exemplo, " $ var2 = (string) $ var1 " inicializa "$ var2 " como uma seqüência explícita . PHP também permite on-the -fly fundição corda pelo uso do " strval ()" função: o código "$ var3 = true" cria "$ var3 " como uma variável booleana. " strval ( $ var3 ) " vai tratar essa mesma variável booleana como uma seqüência , como em comparações de strings ou operações substring .
corda Comparações
Às vezes , tipagem fraca do PHP pode se tornar um problema. Por exemplo , considere o caso de " $ var1 = 1,0 ; $ var2 = 1 ; ". Uma comparação entre as duas PHP trata -los como iguais: if ($ var1 == $ var2 ) irá retornar "true ", porque , por padrão, PHP trata-los como números. Isto continua a ser verdade mesmo que eles estão envoltos em strval funções () : if ( strval ( $ var1 ) == strval ( $ var2 ) ) também irá retornar "true ". Para comparar com precisão essas duas cordas em uma função PHP , use o " === " comparação: if ($ var1 $ var2 === ) retornará "false".
Objetos como cordas < br >
disposição de PHP para converter variáveis on- the-fly também pode causar problemas ao usar objetos. Por exemplo, considere um documento XML que contém a mesma seqüência ( por exemplo, um nome como "John Doe" ) em dois locais. Se você colocar cada um em uma variável com built-in biblioteca " simplexml " do PHP , uma comparação entre as duas variáveis retornará "false" , mesmo que o valor da seqüência é idêntica , pois cada um carrega informações sobre a hierarquia XML e os dois são tecnicamente diferentes porque eles estavam localizados em diferentes partes do arquivo XML. Neste caso, strval () virá para o resgate , retornando somente a corda, sem as informações nó adicional .