PHP - Buscar clave en arreglos asociativos mediante valor

 
Vista:
sin imagen de perfil
Val: 18
Ha aumentado su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

Buscar clave en arreglos asociativos mediante valor

Publicado por David (9 intervenciones) el 02/06/2019 13:48:22
Necesito asignar una habitación, si la hay, con la misma capacidad para un determinado número de personas. Lo que pasa que no consigo que funcione correctamente la función hallarHabitación ya que no busca la habitación correcta (en la imagen he puesto 3 simulaciones y vereis que en cada una escoge erroneamente). He probado la misma función sin arrays asociativos y si funciona, asi que supongo que el error tiene que ver con los arrays asociativos hallados en las otrs dos funciones pero no consigo entender que es lo que falla. Un saludo y espero ayuda, gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
	/* aleatorio que define el numero de habitaciones */
	$cantidadHabitaciones = rand(1,10);
	/* aleatorio que define el número de personas que van a buscar habitación */
	$numeroPersonas = 4;
 
	function disponibilidadHabitaciones($cantidad) {
		/* halla que habitaciones están disponibles */
		for ($i=0; $i <= $cantidad; $i++) {
			/* valor booleano para determinar la disponibilidad */
			$aleatorioDisponibilidad = rand(0,1);
			/* si es cero */
			if ($aleatorioDisponibilidad == 0) {
				/* habitación toma valor libre */
				$arrayDisponibilidadHabitaciones["habitacion".$i] = "libre";
			/* si es otra cosa, 1 */
			} else {
				/* la habitación toma valor ocupado */
				$arrayDisponibilidadHabitaciones["habitacion".$i] = "ocupado";
			}
		}
		/* devuelve un array con las habitaciones y su disponibilidad */
		return $arrayDisponibilidadHabitaciones;
	}
 
	function capacidadHabitaciones($cantidad) {
		/* halla la capacidad que tiene cada habitación */
		for ($i=0; $i <= $cantidad; $i++) {
			/* determina la capacidad que tiene la habitación */
			$aleatorioCapacidad = rand(1,5);
			/* se añade la capacidad que tendrá la habitación determinada por el bucle */
			$arrayHabitaciones["habitacion".$i] = $aleatorioCapacidad;
		}
		/* devuelve un array con las habitaciones y su capacidad */
		return $arrayHabitaciones;
	}
 
	function hallarHabitacion($valor, $array) {
		foreach ($array as $key => $value) {
			if ($valor == $value) {
				$claveSeleccionada = $key;
				break;
			} else {
				$claveSeleccionada = "No hay ninguna habitación disponible";
			}
		}
		return $claveSeleccionada;
	}
 
	print_r(disponibilidadHabitaciones($cantidadHabitaciones));
	echo "<br><br>";
	print_r(capacidadHabitaciones($cantidadHabitaciones));
	echo "<br><br>";
	echo hallarHabitacion($numeroPersonas, capacidadHabitaciones($cantidadHabitaciones));
?>
Imagen-1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder