usar parse json_numeric_check json_encode constantes con como array php jquery json

parse - php json_numeric_check



Eliminar la referencia del índice de la matriz al usar json_encode en php (2)

He hecho una pequeña aplicación usando jQuery datepicker . Estoy estableciendo fechas no disponibles desde el archivo json que se ve así:

{"dates":["2013-12-11","2013-12-10","2013-12-07","2013-12-04"]}.

Me gustaría verificar si una fecha dada ya está en esta lista y eliminarla si es así. Mi código actual se ve así:

if(isset($_GET[''date''])) //the date given { if($_GET[''roomType'']==2) { $myFile = "bookedDates2.json"; $date = $_GET[''date'']; if(file_exists($myFile)) { $arr = json_decode(file_get_contents($myFile),true); if (!in_array($date, $arr[''dates''])) { $arr[''dates''][] = $_GET[''date'']; //adds the date into the file if it is not there already } else { foreach ($arr[''dates''] as $key => $value) { if (in_array($date, $arr[''dates''])) { unset($arr[''dates''][$key]); array_values($arr[''dates'']); } } } } $arr = json_encode($arr); file_put_contents($myFile,$arr); }

Mi problema aquí es que después de codificar la matriz de nuevo, parece que esto

{"dates":["1":"2013-12-11","2":"2013-12-10","3":"2013-12-07","4":"2013-12-04"]}

¿Hay alguna manera de encontrar la coincidencia de fecha en el archivo json y eliminarla, sin las teclas que aparecen después de la codificación?

Cualquier ayuda es apreciada.


Está ignorando el valor de retorno de los valores de la array_values en su intento actual de reindexar la matriz. Correcto es

$arr[''dates''] = array_values($arr[''dates'']);

La reindexación también debe moverse fuera del ciclo foreach , no tiene sentido reindexar varias veces.


Use array_values() para su problema:

$arr[''dates''] = array_values($arr[''dates'']); //.. $arr = json_encode($arr);

¿Por qué? Porque estás desarmando la clave de la matriz sin volver a ordenarla. Entonces, después de esto, la única manera de mantener eso en JSON será codificar claves también. Sin embargo, después de aplicar array_values() , obtendrá claves ordenadas (empezando desde 0 ) que pueden codificarse correctamente sin incluir claves.