当前位置: 编程技术>php
本页文章导读:
▪php中数组编码转换的方法 对一数组进行转码,原本是这样:
代码示例:
unserialize(iconv('gbk','utf-8',serialize($array)));
结果是空白的。
借助var_export函数,最终函数如下:
代码示例:
function array_iconv($in_charset,$out_charse.........
▪php ob_flush 不能每隔一秒输出的解决方法 使用php中的on_flush,要求浏览器每隔一秒输出一个数字。
php.ini配置为版本5.3
implicit_flush = off
output_buffering = off
另:查看output_buffering是否打开,可以:
var_dump(ini_get('output_buffering'));
.........
▪实例学习php中数组、类对象进行值传递与引用传递的区别 本文介绍下php编程中数组和类的对象,作为参数进行值传递的区别,供大家参考。
1,数组值传递
例子:
代码示例:
<?php
function main() {
$cc = array(
'a','b'
.........
[1]php中数组编码转换的方法
来源: 互联网 发布时间: 2013-12-24
对一数组进行转码,原本是这样:
代码示例:
unserialize(iconv('gbk','utf-8',serialize($array)));
结果是空白的。
借助var_export函数,最终函数如下:
代码示例:
function array_iconv($in_charset,$out_charset,$arr){
return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));
}
return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));
}
原理分析:
var_export函数中,设置第二个参数为true,返回数组原型字符串,将字符串转换为utf-8编码,之后再用eval来执行返回(类似匿名函数?)。
如此便轻松解决了php中数组编码转换的问题了。
[2]php ob_flush 不能每隔一秒输出的解决方法
来源: 互联网 发布时间: 2013-12-24
使用php中的on_flush,要求浏览器每隔一秒输出一个数字。
php.ini配置为版本5.3
implicit_flush = off
output_buffering = off
output_buffering = off
另:查看output_buffering是否打开,可以:
var_dump(ini_get('output_buffering'));
例子:
代码示例:
<?php
$i = 3;
ob_start();
while ($i--) {
echo $i, "<br />";
ob_flush();
flush();
sleep(1);
}
ob_end_clean();
?>
$i = 3;
ob_start();
while ($i--) {
echo $i, "<br />";
ob_flush();
flush();
sleep(1);
}
ob_end_clean();
?>
问题:这段代码不能每隔一秒输出呢?
原因分析:
apache运行原理:当访问一个地址(发送请求)后,在apache服务器中启动PHP,php执行是页面级的,如果有可执行的代码:
它全部执行完后再丢给apache,apache再丢给browser显示结果。
解决方法:
如果是cli 显示结果方式又不一样,那里不一样呢?
linux cmd:
php5 test.php
由php直接执行,不经过apache,web service,即可实现:
代码示例:
<?php
$i = 3;
while ($i--) {
echo $i, "\n";
sleep(1);
}
ob_end_clean();
?>
$i = 3;
while ($i--) {
echo $i, "\n";
sleep(1);
}
ob_end_clean();
?>
[3]实例学习php中数组、类对象进行值传递与引用传递的区别
来源: 互联网 发布时间: 2013-12-24
本文介绍下php编程中数组和类的对象,作为参数进行值传递的区别,供大家参考。
1,数组值传递
例子:
代码示例:
<?php
function main() {
$cc = array(
'a','b'
);
change($cc);
var_dump($cc);
die;
}
function change($cc){
$cc = array('dd');
}
main();
?>
function main() {
$cc = array(
'a','b'
);
change($cc);
var_dump($cc);
die;
}
function change($cc){
$cc = array('dd');
}
main();
?>
输出:
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
2,数组引用传递
例子:
代码示例:
<?php
function main() {
$cc = array(
'a','b'
);
change($cc);
var_dump($cc);
die;
}
function change(&$cc){
$cc = array('dd');
}
main();
?>
function main() {
$cc = array(
'a','b'
);
change($cc);
var_dump($cc);
die;
}
function change(&$cc){
$cc = array('dd');
}
main();
?>
输出:
array(1) {
[0]=>
string(2) "dd"
}
[0]=>
string(2) "dd"
}
3,类对象值传递
例子:
代码示例:
<?php
class pp{
public $ss = 0;
}
function main() {
$p = new pp();
change($p);
var_dump($p);
die;
} //by www.
function change($p){
$p->ss = 10;
}
main();
?>
class pp{
public $ss = 0;
}
function main() {
$p = new pp();
change($p);
var_dump($p);
die;
} //by www.
function change($p){
$p->ss = 10;
}
main();
?>
输出:
object(pp)#1 (1) {
["ss"]=>
int(10)
}
["ss"]=>
int(10)
}
4,类对象引用传递
例子:
代码示例:
<?php
class pp{
public $ss = 0;
}
function main() {
$p = new pp();
change($p);
var_dump($p);
die;
}
function change(&$p){
$p->ss = 10;
}
main();
?>
class pp{
public $ss = 0;
}
function main() {
$p = new pp();
change($p);
var_dump($p);
die;
}
function change(&$p){
$p->ss = 10;
}
main();
?>
输出:
object(pp)#1 (1) {
["ss"]=>
int(10)
}
["ss"]=>
int(10)
}
总结:
在php中,数组作为一个普通变量,值传递是要一个实参的一个拷贝副本,跟实参无关,引用传递后可以改变实参的值。
类的对象,无论值传递和引用传递,都是引用传递,是对对象的引用,都会改变实参的值。
你明白了否?关于php中数组与类的对象,作为值传递与引用传递的方法,就介绍这些了,希望对大家有所帮助。
最新技术文章: