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()を使用して、DBから文字列をデコードします。 それ以外のものは役に立たず、JSONは後で使用するために配列の関係を維持します!
json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array
なぜJSON:ほとんどのプログラミング言語で使用できます。phpのserialize()関数によって作成された文字列はPHPでのみ読み取り可能であり、データベースで作成されたアプリケーション間でデータベースが共有されている場合、そのようなものを特別にデータベースに保存したくないでしょう。異なるプログラミング言語
いいえ、そのようにデータベースに単一の文字列として保存する必要はありません。
使用することはできますserialize()
が、これによりデータの検索、操作が困難になり、スペースが無駄になります。
他のエンコードを行うこともできますが、通常は同じ問題が発生しやすくなります。
DBを使用するのは、このような作業を簡単に実行できるためです。配列を格納するためのテーブルは必要ありません。配列として表現できるテーブルが必要です。
例:
id | word
1 | Sports
2 | Festivals
3 | Classes
4 | Other
次のようなテーブルではなく、SQLを使用してテーブルからデータを選択するだけです。
id | word
1 | Sports|Festivals|Classes|Other
これは、リレーショナルデータベースでスキーマを設計する方法ではありません。スキーマの目的を完全に無効にします。
''
代わりに\'
?
最良の方法の1つ:
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を参照してください。
多くの方法があります、
このための2つの最良の方法は
$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