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 参数变成可选的。







  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值