@darknet37

Как сжать большой ассоциативный массив и потом его перебрать. PHP?

Есть вот такой большой массив, он может быть и еще больше.
$array = array(
    "1.5 сп" => [
        'color' => [
            'Зеленый' => 'green',
            'Черный' => 'black',
        ],
        'price' => '250'
    ],
    "2 сп" => [
        'color' => [
            'Зеленый' => 'green',
            'Черный' => 'black',
        ],
        'price' => '250'
    ],
    "3 сп" => [
        'color' => [
            'Зеленый' => 'green',
            'Черный' => 'black',
        ],
        'price' => '350'
    ],
    "4 сп" => [
        'color' => [
            'Зеленый' => 'green',
            'Черный' => 'black',
        ],
        'price' => '150'
    ],
);

Дальше я его перевожу в ассоциативный массив, чтобы хранить в БД.
$string = serialize($array);
Получается вот такая большая строка:
a:4:{s:8:"1.5 сп";a:2:{s:5:"color";a:2:{s:14:"Зеленый";s:5:"green";s:12:"Черный";s:5:"black";}s:5:"price";s:3:"250";}s:6:"2 сп";a:2:{s:5:"color";a:2:{s:14:"Зеленый";s:5:"green";s:12:"Черный";s:5:"black";}s:5:"price";s:3:"250";}s:6:"3 сп";a:2:{s:5:"color";a:2:{s:14:"Зеленый";s:5:"green";s:12:"Черный";s:5:"black";}s:5:"price";s:3:"350";}s:6:"4 сп";a:2:{s:5:"color";a:2:{s:14:"Зеленый";s:5:"green";s:12:"Черный";s:5:"black";}s:5:"price";s:3:"150";}}

Есть какие-нибудь способы ее сжать?
Как потом его перебрать?
  • Вопрос задан
  • 578 просмотров
Решения вопроса 2
Falseclock
@Falseclock
решаю нестандартные задачи
Лучше сериализовывать не через родной сериализатор, а через json_encode
Будет весить в два раза меньше.

И потом, зачем вы хотите сжимать? Если у вас массив менее 10 килобайт, то вы потеряете больше процессорного времени на сжатие и распаковку. Да и размер не сильно уменьшится.

При этом в самой базе можете прям в JSON и хранить, в mySQL и PostgreSQL есть такие типы полей. Мало того, средствами базы потом сможете даже опирировать своими массивами.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы