Voy a responder a esta cuestión aunque caiga en saco roto.
El problema es que se está creando un nivel extra en el array de resultados
$jornadas=5;
$equipos=["equipo1","equipo2","equipo3","equipo4","equipo5","equipo6","equipo7","equipo8"];
for($i = 1 ; $i<=$jornadas;$i++){
$local = $equipos[rand(1,($jornadas-1))];
$partido = array ("local"=>$local);
$ronda[$i][] = $partido;
/* ^
/* |------------------Aquí está el problema */
}
foreach($ronda as $a){
echo "
Equipo Local ".$a['local'];
}
Al hacer esto, la variable $ronda
tiene esta estructura:
Array
(
[1] => Array
(
[0] => Array
(
[local] => equipo5
)
)
[2] => Array
(
[0] => Array
(
[local] => equipo4
)
)
[3] => Array
(
[0] => Array
(
[local] => equipo4
)
)
[4] => Array
(
[0] => Array
(
[local] => equipo3
)
)
[5] => Array
(
[0] => Array
(
[local] => equipo5
)
)
)
Al iterar de este modo en esta esructura de datos:
foreach($ronda as $a){
echo "
Equipo Local ".$a['local'];
}
La variable $a
contiene estos datos:
Array
(
[0] => Array
(
[local] => equipo4
)
)
Y al intentar acceder al índice $a['local']
nos provoca un error puesto que dicho índice se encuentra en un nivel má abajo.
Con este código funciona correctamente:
$jornadas=5;
$equipos=["equipo1","equipo2","equipo3","equipo4","equipo5","equipo6","equipo7","equipo8"];
for($i = 1 ; $i<=$jornadas;$i++){
$local = $equipos[rand(1,($jornadas-1))];
$partido = array ("local"=>$local);
$ronda[$i] = $partido; //Línea que producía el error corregida
}
foreach($ronda as $a){
echo "
Equipo Local ".$a['local'];
}
Cuyo resultoado es el esperado:
Equipo Local equipo3
Equipo Local equipo2
Equipo Local equipo2
Equipo Local equipo5
Equipo Local equipo3
";}` te mostraría las claves y al lado sus valores dentro del array. Quizá `local` es una clave dentro del array y no un valor y por eso no lo encuentra. Pero repito, depende de **lo que haya dentro de tu array**. Para más detalles: [ver esta respuesta](https://es.stackoverflow.com/a/79177/29967) – A. Cedano Jun 17 '17 at 15:55