10/10/2018, 10:44

Cần giúp đỡ tách chuỗi

Em có 1 chuỗi như sau:
$chuoi = 'c1; c2; c3; c4; c5'

cái chuỗi ấy cũng có thể chỉ có c1
$chuoi = 'c1'
hoặc có c1 và c2:
$chuoi = 'c1; c2'
hoặc có c1, c2, c3
$chuoi = 'c1; c2; c3'
......
nhưng tối đa chỉ có đến c5 thôi.
Vậy làm thế nào để tách được cái chuỗi ấy ra thành từng cái một:
$c1 = 'c1'
$c2 = 'c2'
$c3 = 'c3'
$c4 = 'c4'
$c5 = 'c5'

nếu cái chuỗi ấy chỉ có c1 và c2 thôi thì $c3, $c4, $c5 = '

Bác nào biết thì giúp em với
VnVision viết 12:48 ngày 10/10/2018
Code:
function getArgArr($chuoi)
{
	$a = array('c1', 'c2', 'c3', 'c4', 'c5');
	$a_chuoi = explode('; ', $chuoi);
	foreach ($a as $v) {
		$result[$v] = in_array($v, $a_chuoi) ? $v : '';
	}
	return $result;
}
Cách dùng:

Code:
$chuoi = 'c1; c2; c3';
extract(getArgArr($chuoi));
haicoseu viết 12:45 ngày 10/10/2018
Được gửi bởi VnVision
Code:
function getArgArr($chuoi)
{
	$a = array('c1', 'c2', 'c3', 'c4', 'c5');
	$a_chuoi = explode('; ', $chuoi);
	foreach ($a as $v) {
		$result[$v] = in_array($v, $a_chuoi) ? $v : '';
	}
	return $result;
}
Cách dùng:

Code:
$chuoi = 'c1; c2; c3';
extract(getArgArr($chuoi));
Cảm ơn bác nhiều
.....................
ducuytran viết 12:46 ngày 10/10/2018
Sao ko xài hàm explode()?
http://php.net/manual/en/function.explode.php

Theo vd trên thì:
$chuoi = 'c1; c2; c3';
$c = explode(";", $chuoi);

//Nếu cẩn thận hơn thì sau khi explode() nên:
for ($i = 0; $i < count($c); $i++)
$c[$i] = trim($c[$i])//bỏ các khoản trắng ở trái và phải
VnVision viết 13:00 ngày 10/10/2018
Được gửi bởi ducuytran
Sao ko xài hàm explode()?
http://php.net/manual/en/function.explode.php

Theo vd trên thì:
$chuoi = 'c1; c2; c3';
$c = explode(";", $chuoi);

//Nếu cẩn thận hơn thì sau khi explode() nên:
for ($i = 0; $i < count($c); $i++)
$c[$i] = trim($c[$i])//bỏ các khoản trắng ở trái và phải
Bạn đọc lại yêu cầu chủ thớt nhé.
Trịnh Ngọc Lan viết 12:50 ngày 10/10/2018
Dùng hàm explode đủ đáp ứng nhu cầu của chủ thread
VnVision viết 12:48 ngày 10/10/2018
Pó hand, toàn ng ko đọc kỹ cứ thix phán pừa
ducuytran viết 12:54 ngày 10/10/2018
Được gửi bởi VnVision
Pó hand, toàn ng ko đọc kỹ cứ thix phán pừa
Vậy bạn hiểu ntn mà bề trên vậy? Thay vì dùng 5 cái biến từ $c1 tới $c5 thì khai báo mảng chuỗi gồm 5 phần tử, gán '' cho mỗi phần tử rồi thực hiện explode().
Còn nếu muốn giữ mấy cái biến đó thì cứ việc:
$c1 = $c[0];
...
$c5 = $c[4];
VnVision viết 12:57 ngày 10/10/2018
Được gửi bởi ducuytran
Thay vì dùng 5 cái biến từ $c1 tới $c5 thì khai báo mảng chuỗi gồm 5 phần tử
Nói như vậy tức là bạn làm theo ý bạn chứ không làm theo ý của chủ topic. Nên mình mới bảo bạn đọc kỹ lại yêu cầu đi. Bạn thử làm đúng yêu cầu của chủ topic xem bạn làm thế nào nào?

Được gửi bởi ducuytran
Còn nếu muốn giữ mấy cái biến đó thì cứ việc:
$c1 = $c[0];
...
$c5 = $c[4];
Sao bạn không viết đầy đủ ra để thấy số lượng code bằng tay như vậy dài ntn? mà lại ko mở rộng được? Chẳng hạn thay vì chỉ có 5 phần tử từ c1 đến c5, có tới 100 phần tử từ c1 -> c100 bạn sẽ phải viết từng đó phần tử à?
ducuytran viết 12:56 ngày 10/10/2018
Mà thôi, đọc lại thì thấy bồ đã giải quyết ở trên rồi.
Bài liên quan
0