¿El orden de una matriz asociativa está garantizado en PHP?

Cuando realizo un bucle foreach sobre una matriz asociada en php, el orden en que se realiza es el orden en que se define.

Por ejemplo

$arr = array("z" => "z", "a" => "a", "b" => "b");

foreach($arr as $key => val)
  print("$key: $val\n");

Salidas:

z: z
a: a
b: b

Mientra

$arr = array("a" => "a", "b" => "b", "z" => "z");

Salidas:

a: a
b: b
z: z

Entonces mi pregunta es entonces: ¿se define este comportamiento a un nivel de especificación? ¿Puedo tener una certeza razonable de que este comportamiento no cambiará en futuras versiones de PHP?

Respuestas a la pregunta(8)

Su respuesta a la pregunta