Q:

Problema al actualizar contenido de una variable de session

En una variable de session array guardo objetos
En una tabla despliego la información que tengo en la variable de session array
<table border="0" style="width: 80%;" align="center">
<tr>
<td style="width: 10px;">ID</td>
<td style="width: 200px;">Persona</td>
<td style="width: 15px;">Edad</td>
<td style="width: 20px;">Status</td>
</tr>
<?php
foreach($_SESSION["personas"] as $persona)
{
    if($persona["edad"] >= 18)
        $status = "Adulto";
    else if($persona["edad"] >= 15)
        $status = "Adolescente";
    else if($persona["edad"] >= 60)
        $status = "Veterano";
    else
        $status = "Niño";
?>
  <tr class="persona">
   <td class="td_id"><?php echo $persona["id"]; ?><input type="hidden" class="id_personaVal" value="<?php echo $persona["id"]; ?>"></td>
   <td class="td_nombre"><?php echo $persona["nombre"]; ?></td>
   <td class="td_edad"><input type="text" class="edadVal" value="<?php echo $persona["edad"]; ?>"></td>
   <td class="td_status"><?php echo $status; ?></td>
  </tr>  
<?php
}
?>
</table>

La columna edad tiene un input text cuando modifico el valor de ese componente se debe de modificar el valor en la variable de session array.
Este es mi codigo que tengo al momento
Código Script 
$(document).ready(function(){
    asiganrListener();
});

function asiganrListener()
{
   $(".td_edad").on("keyup", function(){
     var id_persona = $(this).parent(0).children(".td_id").children(".id_personaVal").val() * 1.0;
     var edad = $(this).children(".edadVal").val() * 1.0;

     modificar(id_persona, edad);
   });
}

function modificar(id_persona, edad)
{
   $.ajax({
       type: "POST",
       url: "modificar.php",
       data: "id_persona=" + id_persona + "&edad=" + edad, 
       success: function(data)
       {    
          alert(data);
       }            
   });
}

Código modificar.php
<?php
extract($_POST);
# id_persona
# edad

session_start();

$cont = 0;

foreach($_SESSION["personas"] as $persona);
{
    if($persona["id"] == $id_persona)
    {
        $_SESSION["personas"][$cont]["edad"] = $edad;
        break;
    }

    $cont++;
}

echo 1;
?>

El problema es que no modifica correctamente, si trato de modificar el primer elemento no lo hace, pero si modifico el segundo elemento modifica el primero.
Me marca este error:

Fatal error: Cannot break/continue 1 level in
  C:\xampp\htdocs\Sessiones y Cookies\modificar.php on line 15

A:

Tienes un punto y coma (;) en el foreach. Puedes pasar el array por referencia
<?php

extract($_POST);
session_start();

foreach($_SESSION["personas"] as &$persona){
    if($persona["id"] == $id_persona) {
        $persona["edad"] = $edad;
        break;
    }
}
echo 1;

