การแปลงตัวแปรจากแบบหนึ่งไปอีกแบบหนึ่ง เป็นสิ่งที่โปรแกรมเมอร์เจอตลอดการพัฒนา บทความนี้แนะนำการแปลงตัวแปรจาก String เป็น Array ด้วยภาษา Php ยอดนิยม ดังนี้
1. str_split เหมาะกับการแปลงตัวแปร String เป็น Array โดยแบ่งเป็นขนาดเท่าๆกัน เราสามารถกำหนดขนาดที่ต้องการได้ ดังตัวอย่าง
ตัวอย่างที่ 1.1 ถ้าไม่กำหนดขนาดจะแบ่งเป็น 1
<?php
$str = "Hello Share";
$arr1 = str_split($str);
print_r($arr1);
?>
ผลลัพธ์
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] => S
[7] => h
[8] => a
[9] => r
[10] => e
)
ตัวอย่างที่ 2.1 แบ่งโดยกำหนดขนาดเป็น 3
<?php
$str = "Hello Share";
$arr2 = str_split($str, 3);
print_r($arr2);
?>
ผลลัพธ์
Array
(
[0] => Hel
[1] => lo
[2] => Sha
[3] => re
)
2. explode เหมาะกับการแปลงตัวแปร String เป็น Array โดยเราสามารถป้อนค่าตัวแบ่ง (delimiter), ค่าจำกัด (limit) เพื่อให้ได้ Array ที่ต้องการ
ตัวอย่างที่ 2.1 delimiter เป็น " "
<?php
$sentence = "share to your friends";
$pieces = explode(" ", $sentence);
print_r($pieces);
?>
ผลลัพธ์
Array
(
[0] => share
[1] => to
[2] => your
[3] => friends
)
ตัวอย่างที่ 2.2 delimiter เป็น ','
<?php
$input = "share,olanlab";
print_r(explode(',' , $input));
?>
ผลลัพธ์
Array
(
[0] => share
[1] => olanlab
)
ตัวอย่างที่ 2.3 delimiter เป็น '|' และ limit เป็น 2, -1
<?php
$str = 'one|two|three|four';
// positive limit
print_r(explode('|', $str, 2));
// negative limit (since PHP 5.1)
print_r(explode('|', $str, -1));
?>
ผลลัพธ์
Array
(
[0] => one
[1] => two|three|four
)
Array
(
[0] => one
[1] => two
[2] => three
)
- limit ที่มีค่าเป็นบวก จะได้ Array ขนาดเท่ากับค่า limit ที่กำหนด
- limit ที่มีค่าเป็นลบ จะได้ Array ที่ถูกตัดทิ้งจากด้านท้ายเท่ากับค่า limit ที่กำหนด
3. preg_split มีความสามารถมากกว่า explode เราสามารถใส่ regular expression เพื่อทำการแบ่ง String ไปเป็น Array ที่เราต้องการ
ตัวอย่างที่ 3.1 regular expression เป็น "/[\s,]+/"
<?php
// split the phrase by any number of commas or space characters,
// which include " ", \r, \t, \n and \f
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>
ผลลัพธ์
Array
(
[0] => hypertext
[1] => language
[2] => programming
)
ตัวอย่างที่ 3.2 regular expression เป็น "//", limit เป็น -1, flag เป็น PREG_SPLIT_NO_EMPTY
<?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>
ผลลัพธ์
Array
(
[0] => s
[1] => t
[2] => r
[3] => i
[4] => n
[5] => g
)
- ถ้า limit เป็น -1, 0, null หมายถึงไม่มีการจำกัดขนาดผลลัพธ์ที่ถูกแบ่งเป็น Array
- flag เป็น PREG_SPLIT_NO_EMPTY จะได้ค่าที่ไม่เป็นค่าว่างเท่านั้น
ตัวอย่างที่ 3.3 regular expression เป็น "/ /", limit เป็น -1, flag เป็น PREG_SPLIT_OFFSET_CAPTURE
<?php
$str = 'hypertext language programming';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>
ผลลัพธ์
Array
(
[0] => Array
(
[0] => hypertext
[1] => 0
)
[1] => Array
(
[0] => language
[1] => 10
)
[2] => Array
(
[0] => programming
[1] => 19
)
)
- flag เป็น PREG_SPLIT_OFFSET_CAPTURE หมายถึง จะได้ทั้งค่าและตำแหน่งที่ถูกแบ่งออกมาด้วยดังตัวอย่างด้านบน