He estado haciendo un reloj que muestra horarios según el día que es, así que he creado 7 matrices con horarios en ellos. Ahora necesito escribir una instrucción foreach que tome la fecha:
$day = date("D");Luego usa la función foreach en esa matriz como:
foreach ($day as &$value) { }Cuando hago esto, me da un error porque quiere que use la variable de matriz directa.
Advertencia: Se proporcionó un argumento no válido para foreach() en /home/johfin16/johnfinberg.com/php/functions-new.php en la línea 24
Aquí hay un ejemplo de una de mis matrices.
$Mon = array("08:10am-08:30am-Morning Meeting", "08:35am-09:55am-A Block", "10:05am-11:25am-B Block", "11:30am-12:05pm-First Lunch", "12:05pm-12:40pm-Second Lunch", "12:40pm-02:00pm-C Block", "02:05pm-03:25pm-D Block");¿Hay alguna manera de evitar esto sin crear un montón de declaraciones if?
Parece que estás tratando de usar variables variables . Entonces debería ser:
$day = &${date('D'); foreach ($day as &$value) { ... }Sin embargo, las variables variables son generalmente una mala práctica de programación. Cada vez que los necesite, es una señal de que debería usar una matriz asociativa en lugar de variables separadas. Entonces tu código debería ser:
$calendar = array( 'Mon' => array("08:10am-08:30am-Morning Meeting","08:35am-09:55am-A Block", "10:05am-11:25am-B Block", "11:30am-12:05pm-First Lunch", "12:05pm-12:40pm-Second Lunch", "12:40pm-02:00pm-C Block", "02:05pm-03:25pm-D Block"), 'Tue' => array(...), ... );Entonces puedes hacer:
$day = &$calendar[date('D')]; foreach ($day as &$value) { ... }La función de cambio se puede usar para establecer una matriz en $ activa y luego esa matriz se puede usar en la función foreach. Ex:
switch ($day) { case "Mon": $active = $Mon; break; case "Tue": $active = $Tue; break; case "Wed": $active = $Wed; break; default: $active = $Special; }En cada día hay varias clases que deben extraerse de la matriz.
NO
Porque tú tienes:
$day = date("D"); Entonces, cualquier $day contenido antes de que se alcance esta línea, las clases, matrices, variables, etc. se olvidan y $day repente se convierte SOLO en el resultado de la date("D") .
Es posible que desee agregar la date("D") como un elemento de matriz (es decir, uno de los numerosos elementos en una matriz), por lo tanto, haría lo siguiente:
$day[] = date("D"); Esto agregará el valor de la date("D") a una matriz de múltiples $days , esto luego se puede recorrer con un bucle foreach . Para cada día.