PHP dizisini dizgeye dönüştürmenin en iyi yolu nedir? Bir dizi türü olan
değişken var $type
.
$type = $_POST[type];
Her girdi ile ayrılmış benim veritabanında tek bir dize olarak saklamak istiyorum |
:
Spor | Festivaller | Diğer
PHP dizisini dizgeye dönüştürmenin en iyi yolu nedir? Bir dizi türü olan
değişken var $type
.
$type = $_POST[type];
Her girdi ile ayrılmış benim veritabanında tek bir dize olarak saklamak istiyorum |
:
Spor | Festivaller | Diğer
Yanıtlar:
Json_encode () kullanabilirsiniz
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
Daha sonra dize DB'nizden kodu çözmek için json_decode () kullanın. Başka bir şey işe yaramaz, JSON dizi ilişkisini daha sonra kullanmak için sağlam tutar!
json_encode($data) //converts an array to JSON string
json_decode($jsonString) //converts json string to php array
NEDEN JSON: Programlama dillerinin çoğuyla kullanabilirsiniz, php serialize () işlevi tarafından oluşturulan dize yalnızca PHP'de okunabilir ve veritabanı yazılan uygulamalar arasında paylaşılıyorsa bu tür şeyleri veritabanlarınızda özel olarak saklamak istemezsiniz. farklı programlama dilleri
Hayır, veritabanınızda bu şekilde tek bir dize olarak saklamak istemezsiniz.
Kullanabilirsiniz, serialize()
ancak bu verilerinizi aramayı zorlaştırır, çalışması zorlaşır ve alan israfı sağlar.
Başka kodlama da yapabilirsiniz, ancak genellikle aynı soruna eğilimlidir.
Bir DB sahip olmanızın tek nedeni, bu tür işleri önemsiz bir şekilde başarabilmenizdir. Dizileri saklamak için bir tabloya, dizi olarak temsil edebileceğiniz bir tabloya ihtiyacınız vardır.
Misal:
id | word
1 | Sports
2 | Festivals
3 | Classes
4 | Other
Aşağıdaki gibi görünen bir tablo yerine verileri SQL ile tablodan seçmeniz yeterlidir:
id | word
1 | Sports|Festivals|Classes|Other
Herhangi biri ilişkisel bir veritabanında bir şemayı bu şekilde tasarlamaz, amacını tamamen yener.
''
yerine \'
?
En iyi yollardan biri:
echo print_r($array, true);
json_decode
Karışıklığa neden olan formatla uğraştığından bu en iyisi olmalı .
<?php
$string = implode('|',$types);
Ancak, Gizli haklıdır, muhtemelen bu şekilde depolamak istemezsiniz - bu, veritabanınızın ilişkisel gücünün toplam kaybıdır.
Serileştirme konusunda kararsızsanız json_encode () kullanmayı da düşünebilirsiniz.
Bu KEYS & VALUES'i kurtarıyor
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;
}
Umarım birine yardımcı olur.
$data = array("asdcasdc","35353","asdca353sdc","sadcasdc","sadcasdc","asdcsdcsad");
$string_array = json_encode($data);
şimdi bu $ string_array değerini Veritabanına ekleyebilirsiniz
Mağaza ilişkilendirilebilir dizileri için şunları kullanabilirsiniz serialize
:
$arr = array(
'a' => 1,
'b' => 2,
'c' => 3
);
file_put_contents('stored-array.txt', serialize($arr));
Ve kullanarak yükleyin unserialize
:
$arr = unserialize(file_get_contents('stored-array.txt'));
print_r($arr);
Ancak .php
dizi içeren dinamik dosyalar oluşturmaya ihtiyacınız varsa (örneğin yapılandırma dosyaları), şöyle kullanabilirsiniz var_export(..., true);
:
Dosyaya kaydet:
$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);
Dizi değerlerini alın:
$arr = include 'config.php';
print_r($arr);
PHP string fonksiyonunu kullanabilirsiniz implode()
Sevmek,
<?php
$sports=$_POST['sports'];;
$festival=$_POST['festival'];
$food=$_POST['food'];
$array=[$sports,$festival,$food];
$string=implode('|',$array);
echo $string;
?>
Örneğin,
$sports='football';
$festival='janmastami';
$food='biriyani';
Sonra çıktı:
football|janmastami|biriyani
PHP implode () işlevi hakkında daha fazla bilgi için bkz. W3schools
birçok yolu var ,
bunun için en iyi iki yol
$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