在本文中,我们将详细介绍PHP相关数据处理的各个方面,并为您提供关于php数据处理的相关解答,同时,我们也将为您带来关于------->php代码优化及php相关问题总结、2.1Python数据处理篇
在本文中,我们将详细介绍PHP相关数据处理的各个方面,并为您提供关于php 数据处理的相关解答,同时,我们也将为您带来关于------->php代码优化及php相关问题总结、2.1Python数据处理篇之---内建有关数学的函数、php – Laravel 5表单请求 – 验证相关数据、php – PDO / SQLite:覆盖两个相关数据库的单个查询的有用知识。
本文目录一览:- PHP相关数据处理(php 数据处理)
- ------->php代码优化及php相关问题总结
- 2.1Python数据处理篇之---内建有关数学的函数
- php – Laravel 5表单请求 – 验证相关数据
- php – PDO / SQLite:覆盖两个相关数据库的单个查询
PHP相关数据处理(php 数据处理)
1、多维数组按照指定键名排序
$order_created_at = array_column($data,'created_at');
array_multisort($order_created_at ,SORT_DESC,$data);
2、替换数组指定键名:循环原数组,将需要替换的键值复制给指定的键名,然后再unset掉原键名。
//原键名:id 指定键名:userid
foreach ($data as $key => $value) {
$data[$key]['userid'] = $data[$key]['id'];
unset($data[$key]['id']);
}
------->php代码优化及php相关问题总结
问题|优化
1,在函数中,传递数组时
使用 return 比使用 global 要高效
比如
function userloginfo($usertemp){
$detail=explode("|",$usertemp);
return $detail;
}
$login=userloginfo($userdb);
比
function userloginfo($usertemp){
global $detail;
$detail=explode("|",$usertemp);
}
userloginfo($userdb);
要高效
2,(这个代码用于得到程序目录对应的网址,推荐使用)
$urlarray=explode(''/'',$HTTP_SERVER_VARS[''REQUEST_URI'']);
$urlcount=count($urlarray);unset($urlarray[$urlcount-1]);
$ofstarurl=''http://''.$HTTP_SERVER_VARS[''HTTP_HOST''].implode(''/'',$urlarray);
这段代码比
$pre_urlarray=explode(''/'',$HTTP_SERVER_VARS[''HTTP_REFERER'']);
$pre_url=array_pop($pre_urlarray);
要高效
3,在循环中判断时,数值判断使用恒等要比等于高效
$a=2;$b=2;
比如
if($a==$b)$c=$a;
比
if($a===$b)$c=$a;
高效
4,mysql 查询时尽量使用where in 少用 limit
limit查多记录的前几条, 速度很快, 但是查询最面几条就会慢
使用in .在查询连续性记录,非常快, 非连续性记录第一次运行会稍微慢一点,但是之后将比较快!
5,NT服务器数据操作稳定性不及unix/linux
6,输出前使用尽量使用 ob_start(); 可以加快输出速度,适用NT或nuli/linux,对unlix类服务器 如果使用 ob_start(''ob_gzhandler'');输出效率将更高
7,判断的时候尽量使用if($a==他的值) 否定的时候尽量使用if(empty($a)),因为这样程序运行更快速
8,使用不等时 != 与 效率相当
9,个人经验得 使用 $a="11111111111111"; 的效率和 $a=''11111111111111''; 相当.并不象书本说的相差很大
10,使用规范的SQL语句, 会有利于MySQL的解析
11,使用
if($online){
$online1=$online;
setcookie(''online1'',$online,$cookietime,$ckpath,$ckdomain,$secure);
}
COOKIE将马上生效
使用
if($online)
setcookie(''online1'',$online,$cookietime,$ckpath,$ckdomain,$secure);
COOKIE需要再刷新一次才能生效
12,使用
$handle=fopen($filename,wb);
flock($handle,LOCK_SH);
$filedata=fread($handle,filesize($filename));
fclose($handle);
比
file($filename);
无论在速度还是稳定上都要优秀
13,截断字符串优化函数(可避免?字符出现)
function substrs($content,$length) {
if(strlen($content)>$length){
$num=0;
for($i=0;$iif(ord($content[$i])>127)$num++;
}
$num%2==1 ? $content=substr($content,0,$length-4):$content=substr($content,0,$length-3);
$content.='' ...'';
}
return $content;
}
比如$newarray[1]=substrs($newarray[1],25);
14,程序中屏蔽大小写
for ($asc=65;$asc{ //strtolower() 此函数在一些服务器会产生乱码!
if (strrpos($regname,chr($asc))!==false)
{
$error="为了避免用户名混乱,用户名中禁止使用大写字母,请使用小写字母";
$reg_check=0;
}
}
15,不使用 file();和不使用 fget();(不稳定或速度慢) 取一数组函数
function openfile($filename,$method="rb")
{
$handle=@fopen($filename,$method);
@flock($handle,LOCK_SH);
@$filedata=fread($handle,filesize($filename));
@fclose($handle);
$filedata=str_replace("\n","\n
$filedb=explode("
//array_pop($filedb);
$count=count($filedb);
if($filedb[$count-1]==''''){unset($filedb[$count-1]);}
return $filedb;
}
//这个函数虽然代码比较多,不过在速度和稳定性上优势很大!
2.1Python数据处理篇之---内建有关数学的函数
目录
[TOC]
前言
数值分析的道路还很遥远,先从最基础的抓起。
(一)数学相关得内建函数
abs() | 求有理数的绝对值,或者复数的模 |
---|---|
1+j2(或者complex([real[, imag]])) | 创建复数 |
divmod(被除数,除数) | 求商和余数 |
pow(x,y) | 求x得y次幂 |
range([start],stop,[step] ) | 生成一个系列 |
round(原数, 第几位小数约分) | 四舍五入 |
sum(item) | 对一个可迭代对象求和 |
max(item) | 对一个可迭代对象求最大值 |
min(item) | 对一个可迭代对象求最小值 |
eval(string) | 对字符串得表达式求值 |
(二)具体演示
1.求绝对值
a = abs(-1)
b =abs(-4.5)
print(a)
print(b)
1 4.5
2.创建一个复数
a=1+2j
print(type(a),a)
<class ''complex''> (1+2j)
3.求商和余数
divmod(5,2)
(2, 1)
4.求x得y次幂
pow(2,3)
8
5.生成一个序列
range(1, 11)
range(1, 11)
6.四舍五入
a = round(4.15, 1)
b = round(4.14, 1)
print(a)
print(b)
4.2 4.1
7.对一个集合求和
sum([11,2,3,4,5])
25
8.求最大值
max(1,7,3,5,9,1,2,6)
9
9.求最小值
min(4,3,9,7,6,4,2)
2
10.计算表达式中的值
eval("1+2**3")
9
作者:Mark
日期:2019/02/16 周六
php – Laravel 5表单请求 – 验证相关数据
但是如果我必须验证包含一对多关系数据的请求,如何处理.
例如,如果我有简单的发票应用程序.
一张发票有很多服务.
我的表单发布请求包含以下数据:
array (size=5) 'date' => string '2014-11-14' (length=10) 'num' => string '175' (length=3) 'client_id' => string '5' (length=1) 'vat' => string '1' (length=1) 'services' => array (size=2) 0 => array (size=3) 'description' => string 'Service 1' (length=36) 'value' => string '10' (length=2) 'items' => string '2' (length=1) 1 => array (size=3) 'description' => string 'Service 2' (length=11) 'value' => string '20' (length=2) 'items' => string '2' (length=1)
现在在InvoiceFormRequest类中,我可以验证发票数据,但是如何继续服务:
<?PHP namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Response; class InvoiceFormRequest extends FormRequest { public function rules() { return [ 'date' => 'required','num' => 'required','client_id' => 'required','vat' => 'required' ]; } public function authorize() { return true; } }
提前致谢!
更新:
正如我在Laravel中阅读过here,可以写下这样的东西:
'services.*.description' => 'required','services.*.value' => 'required:numeric','services.*.items' => 'required:integer'
'services.*.description' => 'required','services.*.items' => 'required:integer'
http://laravel.com/docs/5.2/releases#laravel-5.2
php – PDO / SQLite:覆盖两个相关数据库的单个查询
玩两个Feeddemon的sqlite数据库,tags.fdb和Feeds.fdb,我创建了这个工作原始查询(使用Firefox’方便的插件sqlite管理器测试):
SELECT tbl_tags.tag_name,Feeds.tbl_posts.link FROM tbl_tags INNER JOIN Feeds.tbl_posts ON tbl_tags.fd_postid=Feeds.tbl_posts.fd_postid ORDER BY tbl_tags.tag_name
它主要查询Feeddemon的tags.fdb和附加的Feeds.fdb数据库文件(使用sqlite的功能ATTACH Feeds.fdb AS Feed).它列出了所有标记的帖子及其标签名称和超链接.如您所见,数据库内容与fd_postid相关.
可视化发生的事情的示例:
tags.fdb的tbl_tags表内容:
fd_postid tag_name 1 rainbow 2 orange 5 green
Feeds.fdb的tbl_posts表内容:
fd_postid link 1 google.com 2 stackoverflow.com 3 microsoft.com 4 slashdot.org 5 techcrunch.com
查询结果,按tag_name排序:
green techcrunch.com orange stackoverflow.com rainbow google.com
题
如何使用PHP中的PDO实现此单个内部联接查询以涵盖多个相关数据库?
在PDO中连接到两个数据库还会创建两个对象:
$db1 = new PDO('sqlite:tags.fdb'); $db2 = new PDO('sqlite:Feeds.fdb');
但是如果我想查询,我必须指定一个对象:
$result = $db1->query('SELECT * FROM soMetable');
那么如何弥合差距并使用一个查询来定位两个数据库呢?
或者我可以直接在PDO中使用sqlite的ATTACH数据库AS别名功能吗?如果是这样,怎么样?但这可能被认为是不好的做法,对吗?由于PDO旨在成为非特定的数据库.
我认为这个用户最终都在寻找相同的东西,但从来没有真正达到工作代码示例的要点:
How do you join two PDO objects in the same foreach loop?
注意:回答时,请考虑一下这个事实,即我是一名前端/图形人员,大约两个月前才开始学习PHP / PDO / sqlite.问题可能高于我的经验水平.我很惊讶我设法让原始查询正常工作.但我在学习…
解决方法
使用PDO,它的工作方式与执行任何其他sql命令的方式相同;你只需指定一个不同的文件名(和目录,如果需要):
$db = new PDO('sqlite:tags.db'); $db->exec('ATTACH \'Feeds.db\' as Feeds'); $result = $db->query('SELECT tbl_tags.tag_name,Feeds.tbl_posts.link ...');
虽然PDO主要独立于实际数据库,但您无法避免指定sqlite:打开数据库时,您可以使用的实际sql方言总是取决于数据库.出于实际目的,ATTACH命令在逻辑上是打开数据库的一部分,而Feeds.tbl_posts只是一个表名.
注意:sqlite在所有附加数据库中搜索表名,因此您可以省略唯一表名的数据库名称.
今天的关于PHP相关数据处理和php 数据处理的分享已经结束,谢谢您的关注,如果想了解更多关于------->php代码优化及php相关问题总结、2.1Python数据处理篇之---内建有关数学的函数、php – Laravel 5表单请求 – 验证相关数据、php – PDO / SQLite:覆盖两个相关数据库的单个查询的相关知识,请在本站进行查询。
本文标签: