PHP配列を文字列に変換するための最良の方法は何ですか?
型の配列である変数$type
があります。
$type = $_POST[type];
各エントリを|
で区切って1つの文字列としてデータベースに保存します。
スポーツ|フェスティバル|その他
単純に implode を使用してください。
implode("|",$type);
json_encode() を使用できます。
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
あとで json_decode() を使ってDBから文字列をデコードするだけです。 それ以外は無駄です。JSONは配列の関係をそのまま使用して後で使用することができます。
いいえ、あなたはそれをあなたのデータベースに単一の文字列として保存したくはありません。
serialize()
を使うこともできますが、これはあなたのデータを検索することを困難にし、扱うことを困難にし、そしてスペースを無駄にするでしょう。
他のエンコードもできますが、一般的に同じ問題が発生しやすいです。
あなたがDBを持っている全体の理由はあなたがこのような仕事を些細に成し遂げることができるということです。配列を格納するためのテーブルは必要ありません。配列として表現できるテーブルが必要です。
例:
id | Word
1 | Sports
2 | Festivals
3 | Classes
4 | Other
次のようなテーブルを用意するのではなく、SQLを使用してテーブルからデータを選択するだけです。
id | Word
1 | Sports|Festivals|Classes|Other
それは誰もがリレーショナルデータベースでスキーマを設計する方法ではありません、それは完全にそれの目的を破ります。
json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array
なぜJSON:あなたはそれをほとんどのプログラミング言語で使うことができます、phpのserialize()関数によって作られた文字列はPHPだけで読むことができます異なるプログラミング言語で書かれたアプリケーション間で共有される
最善の方法の1つ:
echo print_r($array, true);
<?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 を参照してください。