Предисловие
В PHP есть оператор, который освобождает переменные, называемые unset (начиная с PHP 4, unset больше не функция, а оператор). В этой статье в основном представлен соответствующий контент о влиянии PHP unset на json_encode . Давайте перейдем к деталям.
Сначала запустите фрагмент PHP-кода:
$a = Array(0=>'hello world', 1=>'girl', 2=>'boy'); var_dump(json_encode($a)); unset($a[1]); var_dump(json_encode($a));
Результаты заключаются в следующем:
строка(28) “[“привет, мир”,”девочка”,”мальчик”]” строка(29) “{“0″:”привет, мир”,”2″:”мальчик”}”
Обнаружено, что до и после отмены установки тип переменной меняется. До захода солнца это массив, а после захода солнца-объект.
Почему это так?
Посмотрите, что делают unset и json_encode.
Функция Unset () уничтожает указанную переменную. Вы можете удалить указанные элементы массива, и индекс не будет изменен после удаления.
Функция Json_encode() используется для кодирования переменных в формате JSON, которая возвращает данные JSON при успешном выполнении или ЛОЖЬ, если нет.
Если объектом преобразования json_encode является массив, то вам нужно обратить на это внимание. Посмотрите на следующий пример:
Приведите пример:
$a = Array(0=>'hello world', 1=>'girl', 2=>'boy'); var_dump(json_encode($a)); $b = Array('name'=>'hello world', 'age'=>'18', 'gender'=>'man'); var_dump(json_encode($b));
Операционные результаты:
строка(28) “[“привет, мир”,”девочка”,”мальчик”]” строка(48) “{“имя”:”привет, мир”,”возраст”:”18″,”пол”:”мужчина”}”
Установлено, что один из приведенных выше результатов представляет собой массив, а другой-объект.
Это связано с тем, что $a-массив индексов (непрерывный массив), $b-ассоциативный массив (прерывистый массив).
Давайте возьмем другой официальный пример:
Результаты приведенного выше вывода являются следующими:
Примечание: Второй массив выше преобразуется в объект, поскольку значение ключа не начинается с 0, что также является прерывистым массивом.
Поэтому, когда unset выполняется в непрерывном массиве, он становится прерывистым массивом, а когда json_encode выполняется в прерывистом массиве, он становится объектом.
Вывод:
PHP:
Массив индексов: массив с числами в качестве ключей. И ключевая ценность-это саморазвитие.
Массив ассоциаций: относится к значению ключа, соответствующему значению, и это значение ключа нерегулярно, обычно мы указываем.
После преобразования массива индексов в json он становится массивом. Когда ассоциативный массив преобразуется в json, он является объектом
Разверните один:
Если вы хотите выполнить json_encode в непрерывном массиве и стать объектом, вы можете сделать это:
$arr = array( '0'=>'a','1'=>'b','2'=>'c','3'=>'d' ); echo json_encode((object)$arr);
Выходные результаты выглядят следующим образом:
{“0″:”a”,”1″:”b”,”2″:”c”,”3″:”d”}
Разверните два:
Как устранить влияние unset на json_encode? Результаты преобразования по-прежнему являются массивами
При использовании unset:
foreach ($array as $k => $v) { If (a condition){ unset($array[$k]); } }
После оптимизации:
$tmp = array(); foreach ($array as $k => $v) { If (a condition){ continue; } $tmp[] = $v; } $array = $tmp;
Json_encode в оптимизированном массиве $может быть идеально преобразован в массив вместо объекта
резюме
Выше приведено все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенное справочное значение для учебы или работы каждого. Если у вас есть какие-либо вопросы, вы можете оставить сообщение и обменяться им. Спасибо вам за вашу поддержку в развитии peer.