Массив для String PHP?

Каков наилучший способ преобразования массива PHP в строку?
У меня есть переменная $type которая представляет собой массив типов.

 $type = $_POST[type]; 

Я хочу сохранить его как одну строку в моей базе данных с каждой записью, разделенной | :

Спорт | Фестивали | Другое

Просто используйте impode

 implode("|",$type); 

Вы можете использовать json_encode ()

 <?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?> 

Позже просто используйте json_decode () для декодирования строки из вашей БД. Все остальное бесполезно, JSON сохраняет отношения массива без изменений для последующего использования!

Нет, вы не хотите хранить его как одну строку в своей базе данных.

Вы можете использовать serialize() но это сделает ваши данные более трудными для поиска, с трудностями в работе и потерей пространства.

Вы можете сделать и другую кодировку, но она, как правило, подвержена той же проблеме.

Вся причина, по которой у вас есть БД, заключается в том, что вы можете выполнить такую ​​работу тривиально. Вам не нужна таблица для хранения массивов, вам нужна таблица, которую вы можете представлять как массив.

Пример:

 id | word 1 | Sports 2 | Festivals 3 | Classes 4 | Other 

Вы просто выберете данные из таблицы с помощью SQL, а не таблицу, которая выглядит так:

 id | word 1 | Sports|Festivals|Classes|Other 

Это не то, как кто-то проектирует схему в реляционной базе данных, она полностью побеждает ее цель.

Один из лучших способов:

 echo print_r($array, true); 
 json_encode($data) //converts an array to JSON string json_decode($jsonString) //converts json string to php array 

ПОЧЕМУ JSON: вы можете использовать его с большинством языков программирования, строка, созданная функцией serialize () php, читается только на PHP, и вам не понравится хранить такие вещи в ваших базах данных, особенно если база данных разделена между приложениями, написанными на разные языки (например, мобильные приложения разных платформ).

implode () :

 <?php $string = implode('|',$types); 

Тем не менее, Incognito прав, вы, вероятно, не хотите его хранить таким образом – это полная потеря реляционных возможностей вашей базы данных.

Если вы устарели при сериализации, вы также можете рассмотреть возможность использования json_encode ()

Это сохраняет KEYS & VALUES

 function array2string($data){ $log_a = ""; foreach ($data as $key => $value) { if(is_array($value)) $log_a .= "[".$key."] => (". array2string($value). ") \n"; else $log_a .= "[".$key."] => ".$value."\n"; } return $log_a; } 

Надеюсь, это поможет кому-то.

Для ассоциативных массивов хранения вы можете использовать serialize :

 $arr = array( 'a' => 1, 'b' => 2, 'c' => 3 ); file_put_contents('stored-array.txt', serialize($arr)); 

И загрузка с использованием unserialize :

 $arr = unserialize(file_get_contents('stored-array.txt')); print_r($arr); 

Но если нужно создать динамические .php файлы с массивом (например, файлы конфигурации), вы можете использовать var_export(..., true); , как это:

Сохранить в файле:

 $arr = array( 'a' => 1, 'b' => 2, 'c' => 3 ); $str = preg_replace('#,(\s+|)\)#', '$1)', var_export($arr, true)); $str = '<?php' . PHP_EOL . 'return ' . $str . ';'; file_put_contents('config.php', $str); 

Получить значения массива:

 $arr = include 'config.php'; print_r($arr); 

Вы можете использовать функцию implode() string implode()

Подобно,

 <?php $sports=$_POST['sports'];; $festival=$_POST['festival']; $food=$_POST['food']; $array=[$sports,$festival,$food]; $string=implode('|',$array); echo $string; ?> 

Если, например, $sports='football'; $festival='janmastami'; $food='biriyani';

Тогда вывод будет:

football|janmastami|biriyani

Более подробную информацию о функции PHP implode () см. В w3schools

 $data = array("asdcasdc","35353","asdca353sdc","sadcasdc","sadcasdc","asdcsdcsad"); $string_array = json_encode($data); 

теперь вы можете вставить это значение $ string_array в базу данных

Есть много способов ,

двумя наилучшими способами для этого являются:

——- 1 ———-

 <?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); //ouputs as {"a":1,"b":2,"c":3,"d":4,"e":5} <?php $b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z')); $results = print_r($b, true); // $results now contains output from print_r ?>