您的位置:

php回调progress,php 返回值

本文目录一览:

php里面怎么为数组的每个元素应用回调函数?

具体看是想对元素如何操作,比如 array_filter():用回调函数过滤数组中的单元,可以使用回调函数对数组中元素进行筛选剔除元素;

如果是针对每个元素,使用其他函数的话,array_map :数组的每个元素应用回调函数,使用示例:

为数组每个元素执行+5计算;

$arr = [1,2,3,4,5];

#匿名函数操作

$res=array_map(function($item){return $item*2; },$arr);

array_map("函数名", 数组);支持使用 函数名+数据变量 使用。

PHP回调函数到底是个啥

回调函数就是那些自己写的,但是不是自己来调,而是给别人来掉的函数。

就像下面的odd()和even()函数一样。

?php

function odd($var)

{

return($var % 2 == 1);

}

function even($var)

{

return($var % 2 == 0);

}

$array1 = array("a"=1, "b"=2, "c"=3, "d"=4, "e"=5);

$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo "Odd :\n";

print_r(array_filter($array1, "odd"));//这里把array1的值依次传入到odd这个函数里面,这种方式就称为回调

echo "Even:\n";

print_r(array_filter($array2, "even"));

?

下面这个例子实现函数的回调

?

function fnCallBack($msg1, $msg2)

{

echo 'msg1:'.$msg1;

echo 'br/';

echo 'msg2:'.$msg2;

}

$fnName = 'fnCallBack';//函数名

$params = array('hello', 'world');//将要传入到函数里面的参数

call_user_func_array($fnName, $params);

?

PHP回调函数及匿名函数概念与用法详解

PHP的回调函数其实和C,Java等语言的回调函数的作用是一模一样的,都是在主线程执行的过程中,突然跳去执行设置的回调函数;

回调函数执行完毕之后,再回到主线程处理接下来的流程;

而在PHP调用回调函数,不像C以及Java那样直接使用函数名作为函数参数,而是在PHP中使用函数对应的字符串名称执行。

// call_user_func — 把第一个参数作为回调函数调用

// 第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。

// PHP中的匿名函数,也叫闭包函数,允许指定一个没有名称的函数。最常用的就是回调函数的参数值。

//检测一个函数变量是否是一个闭包

// 传入参数,引用局部变量

PHP通过ODBC连接到PROGRESS数据库?

Progress的ODBC并不是通用的,需要用专门的ODBC工具软件来连接,最常用的是Merant ODBC,此以Merant3.7来介绍如何连接progress数据库,由于可能存在不同的操作系统,当然连接方式有些不同.使用Merant3.7需要在客户端安装Progress数据库才可以.

服务端unix(即数据库存放在unix上),客户端window2000服务器配置:

1.在/etc/services配置文件中添加一行启动odbc的端口,例如:

merant 6000/tcp # merantODBC的端口

2.在需要使用odbc的用户的.profile文件中增加变量及路径例如:

DLC=/dlc/91e /*安装的progress的路径*/

PROOIBRK=/dlc/91e/bin/_prooibk /*需要调用的程序的路径*/PROOIDRV=/dlc/91e/bin/_prooidv /*需要调用的程序的路径*/PATH=/dlc/91e/bin:$PATH

export PATH

export DLC

export PROOIBRK

export PROOIDRV

3.执行启动odbc的命令

例如:

/dlc/91e/bin/_prooibk -SV -S merant /*根据progress安装的目录不同会不同,merant是services中增加的端口名称,两边可以随便取名字但必须一样*/客户端配置:

1.同服务端配置一样需要在C:WINNTsystem32driversetc的services文件中增加一行例如:

merant 6000/tcp # merantODBC的端口

2.在系统控制台增加环境变量,建议增加系统的环境变量,根据客户端progress安装的目录不同,可能有所不同DLC c:dlc The directory where you installed the Progress client piecesIDLC c:dlc Required only for 8.1 or higher clientsPROMSGS c:dlcpromsgs The directory and name of the message fileIPROMSGS c:dlcpromsgs Required only for 8.1 or higher clientsPATH c:dlcbin;c:dlc;c:winNTsystem32;%path% Example for Windows NTTEMP c:temp

3.在odbc数据源中作如下配置:

general:

data source name:自己取名

description:随便

database name:数据库的名字

user id:不填

oid/oib options:

protocol:tcp

service name:在services文件中加的merantodbc的端口名称host name:服务器的名称或ip(建议用ip,否则还要在hosts文件中加解析)database options:

database access mode:via server

protocol:tcp

service name:启动数据库的端口名(是在服务端启动数据库服务的端口名也是在服务端的services文件中)host name:启动数据库服务的机器名或ip(推荐ip)完成后应该可以连接上了

php中怎么实现读取数据进度条功能?

?php//防止执行超时set_time_limit(0);//清空并关闭输出缓存ob_end_clean();//需要循环的数据for($i = 0; $i 188; $i++){ $users[] = 'Tom_' . $i;}//计算数据的长度$total = count($users);//显示的进度条长度,单位 px$width = 500;//每条记录的操作所占的进度条单位长度$pix = $width / $total;//默认开始的进度条百分比$progress = 0;?htmlheadtitle动态显示服务器运行程序的进度条/titlemeta http-equiv="Content-Type" content="text/html; charset=utf-8" /stylebody,div input { font-family: Tahoma; font-size: 9pt}/stylescript language="JavaScript" !-- function updateProgress(sMsg, iWidth) { document.getElementById("status").innerHTML = sMsg; document.getElementById("progress").style.width = iWidth + "px"; document.getElementById("percent").innerHTML = parseInt(iWidth / ?php echo $width; ? * 100) + "%"; } -- /script/headbody div style="margin:50px auto; padding: 8px; border: 1px solid gray; background: #EAEAEA; width: ?php echo $width+8; ?px" div style="padding: 0; background-color: white; border: 1px solid navy; width: ?php echo $width; ?px" div id="progress" style="padding: 0; background-color: #FFCC66; border: 0; width: 0px; text-align: center; height: 16px"/div /div div id="status"/div div id="percent" style="position: relative; top: -30px; text-align: center; font-weight: bold; font-size: 8pt"0%/div /div?phpflush(); //将输出发送给客户端浏览器foreach($users as $user){ // 在此处使用空循环模拟较为耗时的操作,实际应用中需将其替换; // 如果你的操作不耗时,我想你就没必要使用这个脚本了 :) for($i = 0; $i 1000000; $i++) { } ?script language="JavaScript" updateProgress("正在操作用户 ?php echo $user; ? ....", ?php echo min($width, intval($progress)); ?);/script?php flush(); //将输出发送给客户端浏览器,使其可以立即执行服务器端输出的 JavaScript 程序。 $progress += $pix;} //end foreach?script language="JavaScript" //最后将进度条设置成最大值 $width,同时显示操作完成 updateProgress("操作完成!", ?php echo $width; ?);/script?phpflush();?/body/html