PHP-数组转换记录
来源:互联网 发布:生活大爆炸知乎 编辑:程序博客网 时间:2024/06/06 00:01
本篇博文将记录在实际的学习中为应对一些数组需要转换的问题,后续会不段更新;
第一个转换(将input框中上传的多个图片信息数组转换成可上传的图片信息数组):
实际背景:遇到在两个input框中上传多张图片的问题,第一个input框(需上传多张图片框)的name为uploadpic,第二个input框(仅上传一张图片)name为noticeCover;在表单上传之后,通过$_FILES获得这两个input的所有图片信息代码和数组格式如下:
代码:
echo "<br/>全部信息"."<pre>"; print_r($_FILES);echo "</pre>";
接收的数组格式:
Array( [uploadpic] => Array ( [name] => Array ( [0] => 1.jpg [1] => 2.jpg [2] => 3.png ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg [2] => image/png ) [tmp_name] => Array ( [0] => /tmp/phpIZlRWu [1] => /tmp/php8nPbzr [2] => /tmp/phpgjYcco ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [size] => Array ( [0] => 8281 [1] => 11837 [2] => 67126 ) ) [noticeCover] => Array ( [name] => book.png [type] => image/png [tmp_name] => /tmp/phps88Mhl [error] => 0 [size] => 7999 ))
现在把第一个input框上传的图片信息提取出来,这个不难,用如下代码: $a = $_FILES["uploadpic"];
显示提取第一个input框图片信息数组:
Array( [name] => Array ( [0] => 1.jpg [1] => 2.jpg [2] => 3.png ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg [2] => image/png ) [tmp_name] => Array ( [0] => /tmp/phpIZlRWu [1] => /tmp/php8nPbzr [2] => /tmp/phpgjYcco ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [size] => Array ( [0] => 8281 [1] => 11837 [2] => 67126 ))
重点来了:提取后的数组格式也是不能直接上传的,需要在进行转换,转换后的格式如下:
Array( [0] => Array ( [name] => 1.jpg [type] => image/jpeg [tmp_name] => /tmp/phpIZlRWu [error] => 0 [size] => 8281 ) [1] => Array ( [name] => 2.jpg [type] => image/jpeg [tmp_name] => /tmp/php8nPbzr [error] => 0 [size] => 11837 ) [2] => Array ( [name] => 3.png [type] => image/png [tmp_name] => /tmp/phpgjYcco [error] => 0 [size] => 67126 ))
刚刚用$a数组接收了第一个input框的图片信息,然后我自己写了上述数组转换的一个函数,把这个数组作为参数传入,数组转换函数代码如下:
/**arrayTransition()函数*功能:将文件上传input框中的二维数组转换成为可上传的二维数组;*参数:二维数组*返回值:二维数组*/function arrayTransition($str){ echo "函数中显示第一部分"."<pre>"; //print_r($str); echo "</pre>"; $fileNum=count($str["name"]); if ($fileNum==1) { $files[0]['name']=$str['name'][0]; $files[0]['type']=$str['type'][0]; $files[0]['tmp_name']=$str['tmp_name'][0]; $files[0]['error']=$str['error'][0]; $files[0]['size']=$str['size'][0]; }else{ for ($i=0; $i < $fileNum; $i++) { $files[$i]['name']=$str['name'][$i]; $files[$i]['type']=$str['type'][$i]; $files[$i]['tmp_name']=$str['tmp_name'][$i]; $files[$i]['error']=$str['error'][$i]; $files[$i]['size']=$str['size'][$i]; } } return $files;}
转换代码如下:
$a = $_FILES["uploadpic"];$files = arrayTransition($a);echo "转化后第一部分数组"."<pre>";print_r($files); echo "</pre>";
这样,这个$files数组便可上传了!
第二个转换(将一个二维数组的一些相关信息转换成一维数组,其中一维数组键值都是这个二维数组的):
实际背景:在数据库查询到多条公告记录,每条记录包含一个公告ID(A_AnnouncementID)和发布公告的时间(A_Date)这个时间为【时间戳】,现在需要按时间顺序,越近的公告显示在设备的越靠上边;
数据库查到的原数组如下:
Array( [0] => Array ( [0] => 114 [A_AnnouncementID] => 114 [1] => 1502242501 [A_Date] => 1502242501 ) [1] => Array ( [0] => 155 [A_AnnouncementID] => 155 [1] => 1502328956 [A_Date] => 1502328956 ) [2] => Array ( [0] => 156 [A_AnnouncementID] => 156 [1] => 1502329000 [A_Date] => 1502329000 ) [3] => Array ( [0] => 157 [A_AnnouncementID] => 157 [1] => 1502331960 [A_Date] => 1502331960 ))
转换后如下:
Array( [1502242501] => 114 [1502328956] => 155 [1502329000] => 156 [1502331960] => 157)
再按照键(时间)大小排序,得到如下数组:
Array( [1502331960] => 157 [1502329000] => 156 [1502328956] => 155 [1502242501] => 114)
这个是用数组遍历foreach实现的,关于这个转换实现代码部分如下:
echo "<pre>";print_r($AnnID);echo "</pre>";/*按时间顺序排列公告ID*/$changeAnnID = array();for ($i=0; $i < count($AnnID); $i++) { $changeAnnID[$AnnID[$i]['A_Date']] = $AnnID[$i]['A_AnnouncementID'];} echo "<pre>";print_r($changeAnnID);echo "</pre>";krsort($changeAnnID); //krsort排序函数;echo "排序后<pre>";print_r($changeAnnID);echo "</pre>";foreach ($changeAnnID as $key => $value) { $AnnIDeach = $value; echo $AnnIDeach."<br/>";}
通过foreach遍历,就可按照时间靠近的公告显示在设备“靠前 ”的位置啦!
注意:krsort()这类函数,返回值是true或者false,而非排序后的生成一个新的数组,它是直接对原数组进行排序,所以,排序后,打印原数组名的数组其实就是排好序后的数组!
- PHP-数组转换记录
- 笔记记录:php将对象转换成为数组
- php 数组转换编码
- PHP数组编码转换
- php/文件数组转换
- PHP数组编码转换
- PHP数组编码转换
- php xml转换数组
- php 数组 对象 转换
- php xml 转换 数组
- php xml 转换数组
- PHP 对象-数组转换
- php数组转换
- 记录DataSet转换数组方法
- PHP 数组操作积累记录
- PHP数组转换编码类
- php 对象转换为数组
- php数组和对象转换
- 今天学英语的两个体悟
- 洛谷 P3383 【模板】线性筛素数(https://www.luogu.org/problem/show?pid=3383)
- Activiti流程引擎的API和服务
- Akka Actor入门示例
- MongoDB分片配置
- PHP-数组转换记录
- Shell Script入门
- java多线程编程核心技术笔记-脏读
- 关于KMP算法的理解
- PHP的log日志函数
- 数据结构-希尔排序
- 扑克牌
- java 关于异常java.net.UnknownHostException: xxx: 未知的名称或服务
- MOOC清华《程序设计基础》第9章第2题:模拟输出正弦曲线