Ответ 1
Просто используйте implode
implode("|",$type);
Каков наилучший способ преобразования массива PHP в строку?
У меня есть переменная $type
, которая представляет собой массив типов.
$type = $_POST[type];
Я хочу сохранить его как одну строку в моей базе данных с каждой записью, разделенной |
:
Спорт | Фестивали | Другое
Просто используйте implode
implode("|",$type);
Вы можете использовать json_encode()
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
Позже используйте json_decode() для декодирования строки из вашей БД. Что-то еще бесполезно, JSON сохраняет отношения массива без изменений для последующего использования!
json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array
ПОЧЕМУ JSON: Вы можете использовать его с большинством языков программирования, строка, созданная функцией php serialize(), доступна для чтения только в PHP, и вам не понравится хранить такие вещи в ваших базах данных, особенно если база данных используется совместно приложениями, написанными на разные языки программирования
Нет, вы не хотите хранить его как одну строку в своей базе данных.
Вы можете использовать serialize()
, но это сделает ваши данные труднее выполнять поиск, работать с трудностями и тратить пространство.
Вы также можете сделать некоторую другую кодировку, но она, как правило, подвержена той же проблеме.
Вся причина, по которой у вас есть БД, заключается в том, что вы можете выполнить такую работу тривиально. Вам не нужна таблица для хранения массивов, вам нужна таблица, которую вы можете представить в виде массива.
Пример:
id | word
1 | Sports
2 | Festivals
3 | Classes
4 | Other
Вы просто выберете данные из таблицы с помощью SQL, а не увидите таблицу, которая выглядит следующим образом:
id | word
1 | Sports|Festivals|Classes|Other
Это не то, как кто-либо проектирует схему в реляционной базе данных, она полностью лишает ее цели.
Один из лучших способов:
echo print_r($array, true);
<?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);
$data = array("asdcasdc","35353","asdca353sdc","sadcasdc","sadcasdc","asdcsdcsad");
$string_array = json_encode($data);
теперь вы можете вставить это значение $string_array в базу данных
Вы можете использовать строчную функцию PHP 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
По сути, преобразование из массива PHP в строку может быть легко выполнено функцией
implode()
.Использование функции
implode()
:implode(separator,array);
Пример:
<?php
$array = array('One','Two','Three','Four');
$string = implode(" ",$array);
echo $string;
?>
Выход будет:
One Two Three Four
Таким образом, это очень простой и лучший способ преобразовать массив PHP в строку. Но что, если у вас есть многомерный массив для преобразования в строку, тогда нужно использовать функцию print_r()
.
<?php
$string = print_r($array, true);
?>
После статьи и более подробное объяснение здесь.
существует много способов,
двумя лучшими способами для этого являются
------- 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
?>