วิธีที่ดีที่สุดในการแปลงอาร์เรย์ 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);
อย่างไรก็ตามการไม่ระบุตัวตนนั้นถูกต้องคุณอาจไม่ต้องการจัดเก็บในลักษณะนั้น - เป็นการสิ้นเปลืองพลังงานโดยรวมของฐานข้อมูลของคุณ
หากคุณตั้งค่าซีเรียลไลซ์แล้วคุณอาจลองใช้json_encode ()
อันนี้จะบันทึก 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;
}
หวังว่าจะช่วยใครซักคน
$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
ไฟล์creat dinamic ที่มีอาเรย์ (เช่นไฟล์กำหนดค่า) คุณสามารถใช้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