php 数组添加与删除元素程序代码

 更新时间:2016年11月25日 17:26  点击:2052
在php中删除数组元素与增加数组元素的方法有很多种,下面小编来给各位同学总结一些实用的与常用的数组元素增加删除实例。

增加数据元素有函数,array_push(),array_unshift()函数

一、在数组的末尾添加元素

1.array_push

使用方法

 代码如下 复制代码

<?php
    $stack = array("orange", "banana");
    array_push($stack, "apple", "raspberry");
    print_r($stack);
?>
输出:
Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)

2.$arr[]

使用方法

<?php

    $arr = array("orange", "banana");
    $arr[]='apple';
    print_r($arr);
?>

这两种的效果是一样的

注意:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。

二、在数组开头插入元素

1.array_unshift

使用方法

 代码如下 复制代码

<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
?>

输出

Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)

删除数组元素unset,或直接设置空


如果要在某个数组中删除一个元素,可以直接用的unset,但今天看到的东西却让我大吃一惊

 代码如下 复制代码


<?php 
$arr = array('a','b','c','d'); 
unset($arr[1]); 
print_r($arr); 
?> 
 
print_r($arr)

之后,结果却不是那样的,最终结果是 Array ( [0] => a [2] => c [3] => d )

 

那么怎么才能做到缺少的元素会被填补并且数组会被重新索引呢?答案是array_splice():

 代码如下 复制代码

<?php 
$arr = array('a','b','c','d'); 
array_splice($arr,1,1); 
print_r($arr);
?>

print_r($arr)之后,结果是Array ( [0] => a [1] => c [2] => d )

删除数组指定元素

如array_slice() 函数在数组中根据条件取出一段值,并返回.

array_slice(array,offset,length,preserve)

array:数组

offset: 规定取出元素的开始位置。如果是正数,则从前往后开始取,如果是负值,从后向前取 offset 绝对值。

 

 代码如下 复制代码

<?php
$a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($a,1,2));
?>

输出

Array ( [0] => Cat [1] => Horse )

还有array_shift() 函数删除数组中的第一个元素,并返回被删除元素的值.

相对的array_pop() 函数删除数组中的最后一个元素.

几个函数用下来觉得array_search()比较实用

array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false

 代码如下 复制代码


$array = array('1', '2', '3', '4', '5');

$del_value = 3;
unset($array[array_search($del_value , $array)]);//利用unset删除这个元素

print_r($array);

输出

array('1', '2', '4', '5');

我们要生成二维码都需要借助一些类库来实现了,下面我介绍利用PHP QR Code生成二维码吧,生成方法很简单,下面我来介绍一下。

利用php类库PHP QR Code来实现,不需要装额外的php扩展
首先下载类库包,有时候地址打不开
地址:http://phpqrcode.sourceforge.net/
下载:http://sourceforge.net/projects/phpqrcode/

使用时一般引入phpqrcode.php文件即可

具体使用方法举例

直接浏览器输出:

 代码如下 复制代码

<?php
    include "phpqrcode/phpqrcode.php";
    $value="http://www.111cn.net";
    $errorCorrectionLevel = "L";
    $matrixPointSize = "4";
    QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize);
    exit;
?>

图片文件输出

 代码如下 复制代码

<?php
   
//文件输出
    include('phpqrcode/phpqrcode.php');
   
// 二维码数据
    $data = 'http://www.111cn.net';
   
// 生成的文件名
    $filename = '1111.png';
   
// 纠错级别:L、M、Q、H
    $errorCorrectionLevel = 'L';
   
// 点的大小:1到10
    $matrixPointSize = 4;
    QRcode::png($data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
?>

生成中间带logo的二维码

 代码如下 复制代码

<?php
   
//生成中间带logo的二维码
    include('phpqrcode/phpqrcode.php');
    $value='http://www.111cn.net';
    $errorCorrectionLevel = 'L';
    $matrixPointSize = 10;
    QRcode::png($value, 'xiangyang.png', $errorCorrectionLevel, $matrixPointSize, 2);
    echo "QR code generated"."<br />";
    $logo = 'bdlogo.gif';
    $QR = 'xiangyang.png';
 
    if($logo !== FALSE)
    {
 
        $QR = imagecreatefromstring(file_get_contents($QR));
        $logo = imagecreatefromstring(file_get_contents($logo));
        $QR_width = imagesx($QR);
        $QR_height = imagesy($QR);
        $logo_width = imagesx($logo);
        $logo_height = imagesy($logo);
        $logo_qr_width = $QR_width / 5;
        $scale = $logo_width / $logo_qr_width;
        $logo_qr_height = $logo_height / $scale;
        $from_width = ($QR_width - $logo_qr_width) / 2;
        imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
    }
    imagepng($QR,'xiangyanglog.png');
?>

我们这里介绍的是在数组中再增加关联数组了,这个就合成了多维数组,下面我来给大家举几个实例,希望对各位同学会有所帮助哈。

在"php 数组添加元素方法总结这篇文章中介绍了如何给数组添加元素,那么我想添加$array=array('title'=>'php教程')这样的元素怎么办呢。

array_push, array_pop, array_shift, array_unshift 这几个函数都是为数字类型的索引数组设计的。
要想实现关联数组的添加可以使用array_merge方法或者是+操作符

我们先来看数组中增加数组元素

1. php中增加数组元素的方法:

(1)通过赋值增加数组元素 :$states[‘name’]=’Tom’;

(2)int array_push(array target_array,mixed variable [,mixed variable…]) 函数将variable增加到target_array的末尾,成功时返回true,否则返回false,其中variable可以是多个。

(3)int array_unshift(array target_array,mixed variable [,mixed variable…]) 函数将variable增加到target_array的数组头,成功时返回true,否则返回false,其中variable可以是多个。所有已有的数值键都会相应地修改,而关联键不受影响。

(4)array array_pad(array target_array,integer length,mixed pad_value) 将target_array 的大小增加到length指定的长度。

使用array_push或者array_unshift这两个方法行么?

答案是否定的


具体方法:

1.使用array_merge方法实现类似array_unshift在开头添加元素的功能

 代码如下 复制代码

<?php
$queue = array('a', 'B');
$queue = array_merge(array('front' => 'hello'), $queue);
/*
Array
(
    [front] => hello
    [0] => a
    [1] => b
)
*/
?>

2.+操作符

 代码如下 复制代码

<?php
$queue = array('a', 'B');
$queue = array('front' => 'Hello') + $queue;
?>

输出结果与使用array_merge方法一样。

3.在元素结尾添加关联数组元素

 代码如下 复制代码

<?php
$queue = array('a', 'B');
$queue['front'] = 'hello';
/*
输出
Array
(
    [0] => a
    [1] => b
    [front] => hello 
)
*/
?>

微信公众平台推出一自定义菜单功能,我们可以简单的直接在后台编辑自定义菜单,也可以利用api来设置菜单,下面我来介绍一下操作方法

 腾讯微信3月19日正式公布公众平台自定义菜单功能。目前该功能仅提供给企业和机构,且内测资格需要申请。对于这一新增功能,目前仅有少数账号已经开通。至此,微信的商业化价值被进一步挖掘出来。

 

微信公众平台推出自定义菜单功能

 

   开发者可利用该功能为公众账号的会话界面底部增加自定义菜单。用户点击菜单中的选项,可以调出相应的回复信息或网页链接。

菜单创建
接口说明
通过POST一个特定结构体,实现在微信客户端创建自定义菜单。
请求说明
http请求方式:POST

https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

结构体其实就是一个json格式的字符串,相信很多朋友就卡在这里了,怎么往这个接口地址 post 一个结构体呢,实现代码如下:

 代码如下 复制代码

public static void main(String[] args) throws Exception {
    URL url = new URL("https://api.weixin.qq.com/cgi-bin
                                 /menu/create?access_token=TOKEN");
        String responeJsonStr = "{"+
                                     ""button":["+
                                     "{"name":"酒店预订","+
                                     ""sub_button":["+
                             "{"+
                                ""type":"click","+
                                ""name":"附近酒店","+
                                ""key":"jintoneinn488878-1""+
                            "},"+
                            "{"+
                                ""type":"click","+
                                ""name":"查找酒店","+
                                ""key":"jintoneinn488878-2""+
                            "}"+
                        "]"+
                    "}"
                "]"+
            "}";
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        conn.connect();
        conn.getOutputStream().write(responeJsonStr.getBytes("utf-8"));
        InputStream is = conn.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(is,"utf-8"));
        StringBuffer buffer = new StringBuffer();
        String line = "";
        while ((line = in.readLine()) != null) {
            buffer.append(line);
        }
        System.out.println(buffer.toString()); 
    }


菜单查询
接口说明

查询当前使用的自定义菜单结构。

请求说明

http请求方式:GET

https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN
返回说明

对应创建接口,正确的Json返回结果:

 代码如下 复制代码

{"menu":{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC","sub_button":[]},{"type":"click","name":"歌手简介","key":"V1001_TODAY_SINGER","sub_button":[]},{"name":"菜单","sub_button":[{"type":"click","name":"hello word","key":"V1001_HELLO_WORLD","sub_button":[]},{"type":"click","name":"赞一下我们","key":"V1001_GOOD","sub_button":[]}]}]}}


菜单删除
接口说明

取消当前使用的自定义菜单。

请求说明

http请求方式:GET
https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
返回说明

对应创建接口,正确的Json返回结果:

 代码如下 复制代码
{"errcode":0,"errmsg":"ok"}

 

CPanel面板是一款非常强大的虚拟主机管理面板了,如果你是空间商估计这个cp面板你不陌生哦,下面我来介绍利用php实现自动备份网站文件.

 

 代码如下 复制代码
<?php
// PHP script to allow periodic cPanel backups automatically.
// Based on script posted by max.hedroom in cpanel.net forums
// This script contains passwords. KEEP ACCESS TO THIS FILE SECURE!
 
// ********* 下面项目需要设定 *********
 
// cPanel登录信息
$cpuser = "**"; // CPanel帐号
$cppass = "***"; // CPanel密码
$domain = "***"; // cPanel所在域名或IP
$skin = "x3"; // 正在使用的cPanel风格,默认"x3"。
 
 
/************** 备份目的地 ***************
"homedir" - 本地主目录
"ftp" - 远程FTP备份(主动模式)
"passiveftp" - 远程FTP备份(被动模式)
"scp" - 加密传输(需服务器支持)
****************************************/
$savedir = "ftp"; // 备份目的地,默认"homedir",即只做本地备份。
 
// FTP上传的信息(备份目的地为本地的,可不填)
 
$ftpuser = "***"; // FTP帐号
$ftppass = "***!"; // FTP密码
$ftphost = "***"; // FTP服务器IP
$ftpport = "21"; // FTP端口,默认21
$ftprdir = "/"; // 远程FTP目录,默认"/"
 
// 通知信息
$notifyemail = "**@gmail.com"; // 信息反馈邮件地址
 
// 安全模式
$secure = 1; // 0为标准http, 1为ssl(需要主机支持ssl)
 
// 设定值为1时会在排程记录中产生网页报告
$debug = 0;
 
// *********** 以下内容不要更改! *********
 
if ($secure) {
   $url = "ssl://".$domain;
   $port = 2083;
} else {
   $url = $domain;
   $port = 2082;
}
 
$socket = fsockopen($url,$port);
if (!$socket) { echo "Failed to open socket connection... Bailing out!n"; exit; }
 
// Encode authentication string
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);
 
$params = "dest=$savedir&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&port=$ftpport&rdir=$ftprdir&submit=Generate Backup";
 
// Make POST to cPanel
fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0rn");
fputs($socket,"Host: $domainrn");
fputs($socket,"Authorization: Basic $passrn");
fputs($socket,"Connection: Closern");
fputs($socket,"rn");
 
// Grab response even if we don't do anything with it.
while (!feof($socket)) {


以上代码复制保存为: fullbackup.php文件,上传到public_html以外的目录

这个全局脚本包含cPanel的登录帐号和密码,为了安全考虑,需要将这个脚本放到public_html文件夹以外的文件夹中,比如:“/home/yourname/backup”,并设置该文件夹的权限为600。切记!

2.填写好相关信息,修改文件名为fullbackup.php
3.将上述脚本上传到“/home/yourdomain/beifen”目录。(没有可以新建beifen目录)
4.将beifen目录的权限改为600
5.打开cpanel面板的时钟守护作业(Cron Jobs)。

选择作业频率,在command栏输入

 代码如下 复制代码

1 /usr/bin/php -q /home/yourname/backup/fullbackup.php

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • 删除条目时弹出的确认对话框

    复制代码 代码如下: <td> <a href="/member/life/edit_ppt/<?php echo $v->id;?>" class="btn">编辑</a> <a href="javascript:;" onclick="if(confirm('您确定删除这条记录?')){location.href='/member/life/d...2014-06-07
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • php跨网站请求伪造与防止伪造方法

    伪造跨站请求介绍伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。...2013-10-01
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25
  • Centos中彻底删除Mysql(rpm、yum安装的情况)

    我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15
  • MyBatis-Plus的物理删除和逻辑删除(使用场景)

    数据库中的数据删除会分为两种:物理删除 和 逻辑删除,接下来通过本文给大家介绍MyBatis-Plus的物理删除和逻辑删除使用场景分析,感兴趣的朋友一起看看吧...2021-09-25
  • 微信小程序 网络请求(GET请求)详解

    这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • 微信小程序自定义tabbar组件

    这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • Python爬取微信小程序通用方法代码实例详解

    这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29
  • 微信小程序手势操作之单触摸点与多触摸点

    这篇文章主要介绍了微信小程序手势操作之单触摸点与多触摸点的相关资料,需要的朋友可以参考下...2017-03-13
  • mybatis-plus getOne和逻辑删除问题详解

    这篇文章主要介绍了mybatis-plus getOne和逻辑删除,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-26