if (isset($_POST['myData'])) {
    $json = json_decode($_POST['myData'], true);
    global $phone, $name, $id_proj;
    $arr = array();
    foreach ($json as $item => $k) {
        $id_proj = $k['movieid'];
        $name = $k['name'];
        $phone = $k['phone'];
        array_push($arr, $k['sedloid']);
    }
    echo "Output $id_proj AND $name AND $phone ";
}

Estoy enviando desde la página de reservas información sobre el usuario.

Este es el JSON que envío en la PÁGINA PHP:
myData:[{"movieid":"1"},{"name":"Random Name"},{"phone":"0601234567"},{"sedloid":"6"},{"sedloid":"7"},{"sedloid":"8"}]

Como respuesta, obtuve un error de índice indefinido, varias veces para cada fila en cada bucle.

Este es el resultado VAR_DUMP del valor JSON decodificado:

array (size=6)
  0 =>
    array (size=1)
      'movieid' => string '1' (length=1)
  1 =>
    array (size=1)
      'name' => string 'Random Name' (length=11)
  2 =>
    array (size=1)
      'phone' => string '0601234567' (length=10)
  3 =>
    array (size=1)
      'sedloid' => string '6' (length=1)
  4 =>
    array (size=1)
      'sedloid' => string '7' (length=1)
  5 =>
    array (size=1)
      'sedloid' => string '8' (length=1) 


¿Qué estoy haciendo mal?

0
S. Popic 26 jun. 2017 a las 00:12

3 respuestas

La mejor respuesta

Eliminando el segundo argumento en json_decode (). Después de eso, obtendrá un objeto de tipo stdClass (en lugar de una matriz asociativa) y podrá acceder a sus propiedades directamente, como se muestra a continuación.

if (isset($_POST['myData'])) {
    $json = json_decode($_POST['myData']); // delete 'true'
    echo "Output $json->movieid AND $json->name AND $json->phone ";
}

Y tu json debe verse así:

{
  "movieid":"1",
  "name":"Random Name",
  "phone":"0601234567",
  "sedloid":"6",
  "sedloid":"7",
  "sedloid":"8"
}

Para ser más precisos, el json debería verse así:

{
  "movieid":"1",
  "name":"Random Name",
  "phone":"0601234567",
  "sedlo": {"id": "6", "id": "7", "id": "8"}
}
0
Stanislav Belichenko 25 jun. 2017 a las 22:04

Creo que su estructura json está mal, intente formatearla así:

[{
    "movieid": "1",
    "name": "Random Name",
    "phone": "0601234567",
    "sedloid": ["6", "7", "8"]
  },
  {
    "movieid": "2",
    "name": "Random Name 2",
    "phone": "0123456",
    "sedloid": ["9", "8", "7"]
}] 

Este sitio para verificar las estructuras json puede ayudar: https://jsonlint.com/

0
Stanislav Belichenko 25 jun. 2017 a las 22:07

Este es tu primer artículo:

{"movieid":"1"}

Esto es lo que le haces:

   $id_proj = $k['movieid'];

Tiene un campo de identificación de película, por lo que está bien.

   $name = $k['name'];

No tiene un campo de nombre, por lo que obtienes un índice indefinido.


Parece que está definiendo los datos incorrectamente es el primer lugar y realmente desea enviar un solo objeto con múltiples campos y no una matriz de múltiples objetos, cada uno de los cuales tiene un campo .

0
Quentin 25 jun. 2017 a las 21:16