1. 程式人生 > >PHP中explode()和implode()函式講解和實戰用法

PHP中explode()和implode()函式講解和實戰用法

一、函式講解

1、explode()函式  把字串打散為陣列:

2、implode()函式 把陣列元素組合為字串:

(詳細講解見下文 三)

例如:

<?php
	$str = '107_lab_2017';
	$array=explode('_', $str);//以下劃線為分隔符將字串打散為陣列 
	print_r($array);
	
	echo implode('_', $array);//以下劃線為分隔符將數組合併成字串
?>

執行結果為:

Array
(
[0] => 107
[1] => lab
[2] => 2017
)
107_lab_2017

二、實戰用法

在實際專案中,例如新增好友和關注等用來儲存好友和關注的人的id

比如 id為1的使用者添加了id為2, 3, 4, 5, 6這5個使用者為好友。可以在使用者表中加一個friends欄位 (為防止因好友過多導致超出欄位長度限制 這裡直接給friends一個text型別),

id為1使用者的好友可以字串2_3_4_5_6的形式儲存在friends欄位中


如果需要判斷id為1的使用者是否新增過id為num(Ps:num代表一個數字,為某個使用者的id)的使用者為好友 可以從資料庫中取出friends欄位將其打散為陣列判斷num是否在陣列中。

例如:

<?php
	$con = mysqli_connect('localhost', 'root', '123456', 'tdbank');
	if(mysqli_connect_errno($con)){
		die('Could not connect:'.mysqli_error());
	}
	$sql = 'SELECT friends from users WHERE id=1';
	$result = mysqli_query($con, $sql);
	$row = mysqli_fetch_assoc($result);
	$id_array=explode('_', $row['friends']);
	if(!isset($_GET['id']) || !is_numeric($_GET['id'])){
		echo '使用者不存在';
		exit;
	}
	
	//判斷是否已經新增過id為$_GET['id']的使用者為好友
	if(in_array($_GET['id'], $id_array)){
		echo '你們已經是好友了';
	}else{
		$friends = empty($row['friends'])?$_GET['id']:$row['friends'].'_'.$_GET['id'];
		$sql = 'UPDATE users set friends = '."'{$friends}'".' WHERE id = 1';
		echo '<br>'.$sql;
		$status = mysqli_query($con, $sql);
		if($status){
			echo '好友新增成功';
		}else{
			echo '好友新增失敗';
		}
	}
?>

三、詳細講解

1、語法規則:explode(separator, string, limit);
引數 描述
separator 必需。規定在哪裡分割字串。
string 必需。要分割的字串。
limit

可選。規定所返回的陣列元素的數目。

可能的值:

  • 大於 0 - 返回包含最多 limit 個元素的陣列
  • 小於 0 - 返回包含除了最後的 -limit 個元素以外的所有元素的陣列
  • 0 - 返回包含一個元素的陣列

版本細則:
返回值: 返回字串的陣列
PHP 版本: 4+
更新日誌: 在 PHP 4.0.1 中,新增了 limit 引數。在 PHP 5.1.0 中,新增了對負數 limit
 的支援。

2、語法規則: implode(separator,array)
引數 描述
separator 可選。規定陣列元素之間放置的內容。預設是 ""(空字串)。
array 必需。要組合為字串的陣列。

版本細則:
返回值: 返回由陣列元素組合成的字串。
PHP 版本: 4+
更新日誌: 在 PHP 4.3.0 中,separator 引數變成可選的。