2015-11-10 1 views
1

Мне нужно сохранить массив PHP как сериализованные данные, подходящие для системы кэширования Laravel. Мой код до сих пор с помощью node-php-serialization является:Сериализовать массив Javascript как строку PHP для кэша Laravel

var serialize=require("php-serialization").serialize; 
var sernew = serialize(result, "string"); 

Это дает:

"s:11:"bob,dave,mark";" 

Но это не работает в кэше Laravel в. Мне нужно:

"s:27:\"[\"bob\",\"dave\",\"mark\"]\";" 

Может ли этот пакет сделать это? Кто-нибудь знает, как он может быть отформатирован, как указано выше?

Большое спасибо.

Дополнительная информация:

Массив, вставляться приходит из кэша, преобразуется в Javascript массив, изменен, затем преобразуется обратно в строку кэша:

rediscache.get(key, function (err, result) { 
     result = unserialize(result); 
     result = JSON.parse(result); 

     for(var i = result.length - 1; i >= 0; i--) { 
      if(result[i] === username) { 
      result.splice(i, 1); 
      } 
     } 

     var sernew = serialize(result, "string"); 

}); 

ответ

1

Результат вы хотите - "s:27:\"[\"bob\",\"dave\",\"mark\"]\";" - строка JSON ["bob","dave","mark"].

Что вы вставляете обратно в сериализацию, это просто строка. В этом точном случае, делать это будет работать:

var sernew = serialize(JSON.stringify(("bob,dave,mark").split(",")), "string"); 

Но он не может работать во всех случаях, если вы не просто иметь простой массив.

Можете ли вы показать полный путь того, что вы делаете со строкой. Что-то может быть сделано неправильно.

+0

Я добавил дополнительные сведения. Я рассмотрю преобразование массива в JSON ... – samiles

+1

Результатом, который вы получите после выполнения сращивания, является массив. Вы должны повернуть этот массив обратно в строку JSON с помощью JSON.stringify(), как я уже упоминал, и только затем сериализуем. 'var sernew = serialize (JSON.parse (результат)," строка ");' – Andrius

Смежные вопросы