Funcion que indica cuantas veces se repite X elemento en un conjunto.
La pongo en dos versiones, Int y String.
la escribo para recibir criticas de los duchos del foro, y aprender de esta programación adaptada a PHP, en este caso. No supe como pasar el String -1 de otra forma que la que veis para recursiva.
Con int, dado la funcion cuantasVeces(numero, cadenaDeNumeros);
<?php //funcion (n,x)// iguales(n,y) n!=y 0 n==y 1 function iguales(int $number, int $other):int{ return ($number == $other) ? 1 : 0; } function newCadena(string $cadena):string{ $arrayCadena = str_split($cadena); foreach($arrayCadena as $key=>$num){ $recuperar .= ($key) ? $num : ''; } return $recuperar; } function cuantasVeces(int $number, int $cadena): int{ switch($cadena){ case 0: return 0; default: $letter = substr($cadena, 0, 1); $value = cuantasVeces($number, (int)newCadena($cadena)); return $value + iguales($number, (int)$letter); } } echo cuantasVeces(4,1249434623); ?>
Con String
<?php //funcion (n,x)// iguales(n,y) n!=y 0 n==y 1 function iguales(string $number, string $other):int{ return ($number == $other) ? 1 : 0; } function newCadena(string $cadena):string{ $arrayCadena = str_split($cadena); foreach($arrayCadena as $key=>$num){ $recuperar .= ($key) ? $num : ''; } return $recuperar; } function cuantasVeces(string $number, string $cadena): int{ switch(strlen($cadena)){ case 0: return 0; default: $letter = substr($cadena, 0, 1); $value = cuantasVeces($number, newCadena($cadena)); return $value + iguales($number, $letter); } } echo cuantasVeces('c','carca'); ?>
Espero criticas para mejorar y aprender, saludos compañeros.