Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

242
Visualizações
array_search() no hace coincidir números con puntos

hago traductor de cifrado. Tengo un problema con la traducción de caracteres cifrados que terminan en puntos. Tengo el siguiente diccionario:

 $dict = array( "I"=>"1", "L"=>"1.", "O"=>"0", "Q"=>"0.", "Z"=>"2", "?"=>"2." );

Cuando uso esto:

 function decode($cypher,$dict){ $sepp = explode(" ",$cypher); foreach($sepp as $char){ echo array_search($char,$dict); }} decode("1. 0. 2.",$dict);

Estoy obteniendo:

 IOZ

En lugar de lo esperado:

 LQ?
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

De forma predeterminada, array_search realiza la misma comparación que el operador == , que intentará "escribir malabarismos" con ciertos valores. Por ejemplo, '1' == 1 , '1.' == 1 y '1.' == '1' son todos verdaderos.

Eso significa que '1' y '1.' siempre coincidirá con el mismo elemento en su tabla de búsqueda.

Afortunadamente, la función toma un tercer argumento, que el manual describe como:

Si el tercer parámetro strict se establece en true , la función array_search() buscará elementos idénticos en el haystack . Esto significa que también realizará una comparación de tipo estricta de la needle en el haystack , y los objetos deben ser la misma instancia.

Esto lo hace equivalente al operador === en su lugar. Tenga en cuenta que '1' === 1 , '1.' === 1 y '1.' === '1' son todos falsos.

Entonces solo necesitas agregar ese argumento:

 echo array_search($char,$dict,true);
over 4 years ago · Santiago Trujillo Relatório

0

Solo necesitas hacer una búsqueda estricta.

Consulte el tercer parámetro de array_search.

 function decode($cypher,$dict){ $sepp = explode(" ",$cypher); foreach($sepp as $char){ echo array_search($char,$dict,true); } }

La razón por la que no funciona es porque php piensa que 1 y 1 son el mismo número.

over 4 years ago · Santiago Trujillo Relatório

0

Esta línea te ayudaría. Establezca el tercer parámetro en true . Esto hace que la comparación se ejecute en modo estricto.

echo array_search($char, $dict, true);

 function decode($cypher, $dict) { $sepp = explode(" ",$cypher); foreach ($sepp as $char) { echo array_search($char, $dict, true); } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda