Який найкращий метод перетворення масиву PHP в рядок?
У мене є змінна, $type
яка є масивом типів.
$type = $_POST[type];
Я хочу зберігати його як єдиний рядок у моїй базі даних, при цьому кожен запис розділяється |
:
Спорт | Фестивалі | Інше
Який найкращий метод перетворення масиву PHP в рядок?
У мене є змінна, $type
яка є масивом типів.
$type = $_POST[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: Ви можете використовувати його з більшістю мов програмування, рядок, створений функцією serialize () php, читається тільки в 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);
json_decode
псує формат, що викликає плутанину.
<?php
$string = implode('|',$types);
Однак Incognito має рацію, напевно, ви не хочете зберігати його таким чином - це загальна витрата реляційної потужності вашої бази даних.
Якщо ви готові до серіалізації, ви також можете скористатися json_encode ()
Це дозволяє економити КЛЮЧІ ТА ЦІННОСТІ
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;
}
Сподіваюся, це комусь допоможе.
$data = array("asdcasdc","35353","asdca353sdc","sadcasdc","sadcasdc","asdcsdcsad");
$string_array = json_encode($data);
тепер ви можете вставити це значення $ string_array в базу даних
Для зберігання асоціативних масивів ви можете використовувати 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);
Ви можете використовувати рядок 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
Є багато способів,
два найкращі способи для цього є
$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}
$b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z'));
$results = print_r($b, true); // $results now contains output from print_r