PHP中合并两个数组array_merge()函数介绍

 更新时间:2016年11月25日 15:47  点击:1919
在php中我们合并数据有两种简单快速的方式一种方式是利用array_merge()函数来操作,另一种办法是利用+号,下面我们来看看哈。

用法

array array_merge ( array $array1 [, array $array2 [, array $... ]] )

例子 1

 代码如下 复制代码
<?php
$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2));
?>

输出:

 代码如下 复制代码

Array ( [a] => Horse [b] => Cat [c] => Cow )

例子2

 代码如下 复制代码

<?php
echo "rn第一种情况rn";
$a=array(1,2,3,4,5,6);
$b=array(7,8,9);
 
$c=array_merge ($a,$b);
print_r($c);
$c=$a+$b;
print_r($c);
$c=$b+$a;
print_r($c);
 
 
echo "rn第二种情况rn";
$a=array('a','b','c','d','e','f');
$b=array('a','x','y');
 
$c=array_merge ($a,$b);
print_r($c);
$c=$a+$b;
print_r($c);
$c=$b+$a;
print_r($c);
 
 
echo "rn第三种情况rn";
 
$a=array(
 1=>'a',
 2=>'b',
 3=>'c',
 4=>'d',
 5=>'e',
 6=>'f');
$b=array(
 1=>'a',
 7=>'x',
 8=>'y');
 
$c=array_merge ($a,$b);
print_r($c);
$c=$a+$b;
print_r($c);
$c=$b+$a;
print_r($c);
?>

本文章简单总结的一个PHP if和or哪个效率对比程序,大家可参考参考。

实例说明

 代码如下 复制代码

<?php
$t1 = microtime();
 
while($i<=10000){
    if(!defined('APP_PATH'));      // 0.011059
    // defined('APP_PATH') OR 1;   // 0.009398
    $i++;
}
 
$t2 = microtime();
echo $t2 - $t1;
?>

例2

 代码如下 复制代码

<?php
$t1 = microtime();
 
while($i<=1000000){
    if(!defined('APP_PATH'));      //0.20043
    // defined('APP_PATH') OR 1;   //0.107475
    $i++;
}
 
$t2 = microtime();
echo $t2 - $t1;
?>

大家去测试一下吧这里我测试了的结果是or 比if效率要高一些哦。

本文章来给大家先介绍PHP中文字符串截取的一些问题及关于如何解决英文和汉字混合的情况下会出现乱码的解决方法。

1. 截取GB2312中文字符串

 代码如下 复制代码

<?php

//截取中文字符串

function mysubstr($str, $start, $len) {

$tmpstr = “”; $strlen = $start + $len;
for($i = 0; $i < $strlen; $i++) {

if(ord(substr($str, $i, 1)) > 0xa0) {

$tmpstr .= substr($str, $i, 2); $i++;

}

else $tmpstr .= substr($str, $i, 1);

}

return $tmpstr;

}

?>

2. 截取utf8编码的多字节字符串

 代码如下 复制代码

<?php

//截取utf8字符串
function utf8Substr($str, $from, $len)

{

return preg_replace(‘#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$from.’}’.
‘((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$len.’}).*#s’, ‘$1′,$str);
}

?>

但是在英文和汉字混合的情况下会出现如下问题:

如果有这样一个字符串

 代码如下 复制代码
$str="这是一个字符串";

为了截取该串的前10个字符,使用

 代码如下 复制代码
if(strlen($str)>10) $str=substr($str,10)."…";

那么,echo $str的输出应该是"这是一个字…"


那么要如何解决这个问题了,下面我来分享一个可以支持gb2312,gbk,big三种编码。

例1

 

 代码如下 复制代码
$len = 19;
$text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";
echo strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."....");
/****chr(0)不是null
null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000
虽然chr(0)不会显示出什么,但是他是一个字符。
当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空”
根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了
注:
编码 第一字节 第二字节
gb2312 0xa1-0xf7 0xa1-0xfe
gbk 0x81-0xfe 0x81-0xfe 0x40-0x7e
big5 0xa1-0xf7 0x81-0xfe 0x40-0x7e
其次这个是网上搜索的,支持utf-8编码,原作者不详:
 *****/
     function subString_UTF8($str, $start, $lenth)
    {
        $len = strlen($str);
        $r = array();
        $n = 0;
        $m = 0;
        for($i = 0; $i < $len; $i++) {
            $x = substr($str, $i, 1);
            $a  = base_convert(ord($x), 10, 2);
            $a = substr('00000000'.$a, -8);
            if ($n < $start){
                if (substr($a, 0, 1) == 0) {
                }elseif (substr($a, 0, 3) == 110) {
                    $i += 1;
                }elseif (substr($a, 0, 4) == 1110) {
                    $i += 2;
                }
                $n++;
            }else{
                if (substr($a, 0, 1) == 0) {
                    $r[ ] = substr($str, $i, 1);
                }elseif (substr($a, 0, 3) == 110) {
                    $r[ ] = substr($str, $i, 2);
                    $i += 1;
                }elseif (substr($a, 0, 4) == 1110) {
                    $r[ ] = substr($str, $i, 3);
                    $i += 2;
                }else{
                    $r[ ] = '';
                }
                if (++$m >= $lenth){
                    break;
                }
            }
        }
        return $r;
    } // End subString_UTF8;
}// End String

#由于此函数返回的是一个数组,因此要配合join函数来显示字符串:
#join('',subString_UTF8($str, $start, $lenth));
#在页面显示的时候还可以在此语句后面连一个"..."

在php中有系统自带的全局变量$_SERVER,里面有很多参数,下面我来介绍获取URL完整路径程序代码有需要的朋友可参考。

举例 URL : http://www.111cn.net/Test/Test.php

 代码如下 复制代码

$_SERVER['SERVER_NAME']:  www.111cn.net

$_SERVER['SERVER_PORT'] : 80

$_SERVER['REQUEST_URI'] : /Test/Test.php

那我们把上面几句结合起来就可以实现了

URL完整路径为:

 代码如下 复制代码
“http://”.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']

如果你是开了端口号,我们可以使用$_SERVER['SERVER_PORT']就好了,上面的代码修改一下即可。

 

 代码如下 复制代码
“http://”.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI']

大家要注意一点。

$_SERVER['PHP_SELFT']与$_SERVER['SCRIPT_NAME']和$_SERVER['REQUEST_URI']和$_SERVER['QUERY_STRING']的区别:

$_SERVER['PHP_SELF']会返回/phptour/test7.php/a=b,会返回文件名/后面的内容
$_SERVER['SCRIPT_NAME']只会返回/phptour/test.php,不会返回文件名后面的/后面的内容
http://localhost:60/phptour/test/test7.php/a=b
$_SERVER['PHP_SELF']将得到:/phptour/test/test7.php/a=b
$_SERVER['SCRIPT_NAME']将得到:/phptour/test/test7.php
$_SERVER['REQUEST_URI']将得到:/phptour/test/test7.php/a=b
$_SERVER['QUERY_STRING']将得到:''

本文章来介绍两种利用php生成纯静态网页的程序代码,有需要的朋友可参考参考。

关于用PHP如何实现全站静态化处理的内容,这样让php生成HTML纯静态网页,让访问速度更快。

 

 代码如下 复制代码

//在开始处加入 ob_start();
ob_start();

//以下是代码
//在结尾加入 ob_end_clean(),并把本页输出到一个变量中
$temp = ob_get_contents();
ob_end_clean();

//写入文件
$fp = fopen(‘文件名','w');
fwrite($fp,$temp) or die(‘写文件错误');
?>

这只是最基本的方法,还不是很实用,因为网站是要更新的,要定期重新生成HTML

下面是我用的方法:

 代码如下 复制代码

if(file_exists(“demo.html”))
{
$time = time();

//文件修改时间和现在时间相差半小时一下的话,直接导向html文件,否则重新生成html
if($time - filemtime(“demo.html”) < 30*60)
{
header(“Location:demo.html”);
}
}
//在开始处加入 ob_start();
ob_start();

//页面的详细内容
//在结尾加入 ob_end_clean(),并把本页输出到一个变量中
$temp = ob_get_contents();
ob_end_clean();

//写入文件
$fp = fopen(‘demo.html','w');
fwrite($fp,$temp) or die(‘写文件错误');

//重新导向
header(“Location:demo.html”);

上面的方法在大批生成时可能不是最好的办法了

 

 代码如下 复制代码

<?php
if($_GET[pg]==''){
$aa=1;
}else{
$aa=$_GET[pg];
}
include("admin/conn.php");
require_once("page.php");
$result=mysql_query("select * from 2carsell ");
$totle=mysql_num_rows($result);
$pagelist = $_GET[t];
if($_GET[t]==''){
$pagelist='200';
}else{
$pagelist=$_GET[t];
}
$pager = new Pager($totle,$pagelist);
$datastat=" 共 <b>".$pager->countall."</b> 条,每次生成 <b>".$pager->countlist."</b> 条,共需生成 <b>".$pager->page."</b> 次";//数据统计
$bb=$pager->page;
$pagenav=$pager->backstr.$pager->thestr.$pager->nextstr;
$limitFrom = $pagelist*($pager->pg-1);
$result=mysql_query("select * from 2carsell ORDER BY id DESC limit $limitFrom,$pagelist");
?>
<center><div style="font-size:14px;"><b>第 <font color=red><?echo $aa?></font > 次页面生成中..<? echo $datastat?></b></div><br>
<?
print "<center><textarea name=textarea class=textarea style='width:520px;height:455px'>";
while($datauser=mysql_fetch_array($result)){

$iid=$datauser[id];
$html = file_get_contents("/moban.php?id=".$iid."");
$sql="select * from 2carsell where id=$iid";
$data=mysql_fetch_array(mysql_query($sql));
$path=date("Ym",$data[PutDate]);
$testdir="html/".$path;
if(file_exists ($testdir)):
else:
mkdir ($testdir, 0777);
echo "目录".$testdir."创建成功!<br>";
endif;


$filename = "html/$path/sell_$iid.html";

// 使用写入模式打开$filename
if (!$handle = fopen($filename, 'w')) {
print "不能打开文件 $filename";
exit;
}

if (is_writable($filename)) {

// 将$html写入到我们打开的文件中。
if (!fwrite($handle, $html)) {
print "不能写入到文件 $filename";
exit;
}

print "文件 $filename 更新成功!nr";

fclose($handle);

} else {
print "文件 $filename 不可写";
}
?>
<? }?>
</textarea>
<br><br>

 

<div style="font-size=12px"><? echo $datastat." "?></div><br><br>
<?
$aa=$aa+1;
if($aa>$bb){
echo '<font color=blue>恭喜,所有页面生成完毕!</font>';
echo "<script>alert('所有文档生成/更新完毕!')</script>";
}else{
echo "<Script> window.location='make.php?t=$pagelist&pg=$aa'; </script>";
}
?>

说明:原动态地址为 moban.php?id=1 ,生成后地址为 html/200808/sell_1.html 。page.php为分页程序,本博客中有发布。
页面使用方式,将本代码保存为make.php,使用方法为浏览器访问 make.php?t=数量&pg=页面;例如 make.php?t=300&pg=2,即每次生成300条数据,从数据列表第2页开始生成,即跳过前面300条。如果不加任何参数,直接访问make.php,则默认每次生成200条,从第一页开始生成。

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • php数组操作 键名比较 差集 交集赋值

    本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
  • C#二维数组基本用法实例

    这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C#数组的常用操作方法小结

    Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
  • php curl模拟post请求和提交多维数组的示例代码

    下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <&#63;php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • C# 拷贝数组的几种方法(总结)

    下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • PHP 二维数组根据某个字段排序的具体实现

    本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25