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

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

$type = $_POST[type];

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

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

Ответ 1

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

implode("|",$type);

Ответ 2

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

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

echo json_encode($arr);
?>

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

Ответ 3

json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array

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

Ответ 4

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

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

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

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

Пример:

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

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

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

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

Ответ 5

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

echo print_r($array, true);

Ответ 6

implode():

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

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

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

Ответ 7

Это сохраняет значения 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;
}

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

Ответ 8

Для хранения ассоциативных массивов вы можете использовать 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);

Ответ 9

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

$string_array = json_encode($data);

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

Ответ 10

Вы можете использовать строчную функцию 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

Ответ 11

По сути, преобразование из массива 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);
?>

После статьи и более подробное объяснение здесь.

Ответ 12

существует много способов,

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

------- 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
    ?>