连接字符串---implode、array_map

案例:从数据表中删除指定的记录

implode
implode连接数组元素,最终生成字符串。
string implode ( string $glue , array $pieces )
$glue 连接符
$pieces 数组

$ids = array('1001','1002','1003');
$str = implode(',',$ids);
echo $str;

输出结果:1001,1002,1003’

$ids = array('1001','1002','1003');
$str = implode(',',$ids);
$sql = "delete from student where no in ($str)";
echo $sql;

输出结果:delete from student where no in (1001,1002,1003)

$ids = array('a','b','c','d');
$str = implode(',',$ids);
$sql = "delete from student where no in ($str)";
echo $sql;

输出结果:delete from student where no in (a,b,c,d);

注:如果in里边是数字,在sql中不会出现错误,但是现在是字符串,我们知道在sql中字符串必须用单引号或双引号引出来,也就是a应该有单引号或双引号。我们用 s t r = i m p l o d e ( , , str = implode(',', ids)把abcd都引了出来,它就形成了一个整个的字符串,失去了原有的特性。
我们为了解决这个问题使用了array_map
array_map
array_map — 将回调函数作用到给定数组的单元上

function quot($str){
	return sprintf("'%s'",$str);
}

$ids = array('a','b','c','d');
//加工数组元素,按照自己的想法处理每一个元素的值,构成合法的元素
$ids = array_map('quot', $ids);
print_r($ids);

输出结果:Array ( [0] => ‘a’ [1] => ‘b’ [2] => ‘c’ [3] => ‘d’ )

注:abcd上均多了单引号。如果 sprintf("’%s’",$str);中的"’%s’"缺了一副单引号,结果将abcd将不会返回单引号

我们可以使用函数quot
原理:
函数把传给了$str(自己定义的一个形参),经过array_map中的quot函数加了一个单引号,以此类推,得到了一个新数组,而且都多了一个单引号。sql指令将正常运行。
经验:
implode可以将元素连接成一个字符串
array_map加工数组元素,按照自己的想法处理每一个元素的值,构成合法的元素

猜你喜欢

转载自blog.csdn.net/weixin_43587078/article/details/84060848