首页 > 编程技术 > php

php echo print print_r三者区别分析

发布时间:2016-11-25 15:08

php教程 echo print print_r三者区别分析

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) 
print()    只能打印出简单类型变量的值(如int,string) 
print_r() 可以打印出复杂类型变量的值(如数组,对象) 
echo     输出一个或者多个字符串

echo -- 输出一个或者多个字符串

定义和用法
echo() 函数输出一个或多个字符串。

语法
echo(strings)参数 描述
strings 必需。一个或多个要发送到输出的字符串。
提示和注释
注释:echo() 实际上不是一个函数,因此您无需对其使用括号。不过,如果您希望向 echo() 传递一个或多个参数,那么使用括号会发生解析错误。

提示:echo() 函数比 print() 函数快一点点。

提示:echo() 函数可以使用简化语法。参见例子 5。
例子
例子 1
<?php
$str = "Who's John Adams?";
echo $str;
echo "<br />";
echo $str."<br />I don't know!";
?>输出:

Who's John Adam?
Who's John Adam?
I don't know!
Descrīption
void echo ( string arg1 [, string ...] ) //返回值为空
echo "你好"," 朋友";

 

print --输出一个字符串

print() 函数输出一个或多个字符串。

语法
print(strings)参数 描述
strings 必需。发送到输出的一个或多个字符串。
提示和注释
注释:print() 函数实际上不是函数,所以您不必对它使用括号。

注释:print() 函数稍慢于 echo()。

Descrīption
int print ( string arg )//返回值为整形
print "你好朋友";

可以进行下面操作
$name=print "nihao n";
$str = 'test print value is $name .';
eval("$print="$str";");
echo $print;

print_r -- 打印关于变量的易于理解的信息。
bool print_r ( mixed expression [, bool return] ) //返回值是布尔型的,参数是mix类型的,可以是字符串,整形,数组,对象类print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
print_r() 将把数组的指针移到最后边。
你可以
print_r(str);
print_r(int);
print_r(array);
print_r(obj);
也可以用var_dump var_export

php 中 print_r 函数输出的数组内容不排列。为了让它输出的好看些。如,数组有多层。分段列出,我们可以这样写:

echo "<pre>";
print_r xxxxx;
echo "<pre>";

php教程 spl_autoload_register与__autoload方法详解

在谈到框架自动加载类的方面,我大概翻了一下,现在主流的框架系统都使用spl_autoload_register函数,而非__autoload函数。

function my_own_loader($classname)
{
    $class_file = strtolower($classname).".php";
    if (file_exists($class_file)){
        require_once($class_file);
    }
}

spl_autoload_register("my_own_loader");

$a = new A();
__autoload 方法在 spl_autoload_register 后会失效,因为 autoload_func 函数指针已指向 spl_autoload 方法
* 可以通过下面的方法来把 _autoload 方法加入 autoload_functions list

spl_autoload_register( '__autoload' );

此外我们还可以使用我们自定义的加载方法:

第一种函数式:

function my_own_loader($classname)
{
    $class_file = strtolower($classname).".php";
    if (file_exists($class_file)){
        require_once($class_file);
    }
}

spl_autoload_register("my_own_loader");

$a = new A();

第二种类式:class Loader
{
    public static function my_own_loader($classname)
    {
        $class_file = strtolower($classname).".php";
        if (file_exists($class_file)){
            require_once($class_file);
        }
    }
}

// 通过数组的形式传递类和方法的名称
spl_autoload_register(array("my_own_loader","Loader"));

$a = new A();
spl_autoload_register()函数应该是主流框架使用最多的也是非常核心的函数之一,可实现自动注册函数和类,实现类似__autoload() 函数功能,简化了类的调用与加载,提高了工作的效率。

支持版本:PHP 5 >= 5.1.2

至于效率问题。php手册上有如此之话:

bool spl_autoload_register ([ callback $autoload_function ] )

将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。貌似他么指向同一个堆栈,效率上都是大哥二哥的问题

php教程  mysql教程_fetch_array与mysql_fetch_assoc区别


一直以来对这两个函数的区别很模糊,只知道mysql_fetch_assooc()可以去除结果集中的重复值,在实际应用中一般都用mysql_fetch_assoc()。今天想到了这两个函数索性就查了下他们的区别,进一步对其加深下了解。mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组。返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返回 false。mysql_fetch_array() 是 mysql_fetch_row()  的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,
用字段名作 为键名。 如果结果中的两个或以上的列具有相同字段名,最后一列将优先。要访问同名的其它列,必须用该列 的数字索引
或给该列起个别名。对有别名的列,不能再用原来的列名访问其内容(本例中的 'field')。 mysql_fetch_array --  从结果集中取得一行作为关联数组,或数字数组,或二者兼有。注释:mysql_fetch_assoc() 和用  mysql_fetch_array() 加上第二个可选参数 MYSQL_ASSOC 完全相同。它仅仅返回关联数组。这也是  mysql_fetch_array() 初始的工作方式。即:mysql_fetch_array($result,'MYSQL_ASSOC')与mysql_fetch_assoc($result)返回结果相同,提示:如果在关联索引之外还需要数字索引,用 mysql_fetch_array()。
注释:本函数返回的字段名是区分大小写的。


mysql_fetch_assoc 得到的是关联数组。
mysql_fetch_array 可以得到关联数组也可以得到索引数组,也可以二者都有。

下面以一个例子进行说明它们的区别:
假如从数据库教程取出一个用户的用户名和密码
username   password
test       123456
用assoc  结果是array([username]=>'test',[password]=>'123456')
用array  根据参数不同结果可能是以下三种之一
         array([username]=>'test',[password]=>'123456')
         array([0]=>'test',[1]=>'123456')
         array([username]=>'test',[password]=>'123456',[0]=>'test',[1]=>'123456')

 

提示和注释
注释:mysql_fetch_assoc() 和用 mysql_fetch_array() 加上第二个可选参数 MYSQL_ASSOC 完全相同。它仅仅返回关联数组。这也是 mysql_fetch_array() 初始的工作方式。

提示:如果在关联索引之外还需要数字索引,用 mysql_fetch_array()。

注释:本函数返回的字段名是区分大小写的

什么是数组?
在使用 PHP 进行开发的过程中,或早或晚,您会需要创建许多相似的变量。

无需很多相似的变量,你可以把数据作为元素存储在数组中。

数组中的元素都有自己的 ID,因此可以方便地访问它们。

有三种数组类型:
数值数组
带有数字 ID 键的数组
关联数组
数组中的每个 ID 键关联一个值
多维数组
包含一个或多个数组的数组 数值数组
数值数组存储的每个元素都带有一个数字 ID 键。

可以使用不同的方法来创建数值数组:

例子 1
在这个例子中,会自动分配 ID 键:

$names = array("Peter","Quagmire","Joe");例子 2
在这个例子中,我们人工分配的 ID 键:

$names[0] = "Peter";
$names[1] = "Quagmire";
$names[2] = "Joe";
可以在脚本中使用这些 ID 键:

<?php教程

$names[0] = "Peter";
$names[1] = "Quagmire";
$names[2] = "Joe";

echo $names[1] . " and " . $names[2] . " are ". $names[0] . "'s neighbors";
?>
以上代码的输出:

Quagmire and Joe are Peter's neighbors关联数组
关联数组,它的每个 ID 键都关联一个值。

在存储有关具体命名的值的数据时,使用数值数组不是最好的做法。

通过关联数组,我们可以把值作为键,并向它们赋值。

例子 1
在本例中,我们使用一个数组把年龄分配给不同的人:

$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);例子 2
本例与例子 1 相同,不过展示了另一种创建数组的方法:

$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";
可以在脚本中使用 ID 键:

<?php

$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";

echo "Peter is " . $ages['Peter'] . " years old.";
?>
以上脚本的输出:

Peter is 32 years old.多维数组
在多维数组中,主数组中的每个元素也是一个数组。在子数组中的每个元素也可以是数组,以此类推。

例子 1
在本例中,我们创建了一个带有自动分配的 ID 键的多维数组:

$families = array
(
  "Griffin"=>array
  (
  "Peter",
  "Lois",
  "Megan"
  ),
  "Quagmire"=>array
  (
  "Glenn"
  ),
  "Brown"=>array
  (
  "Cleveland",
  "Loretta",
  "Junior"
  )
);
如果输出这个数组的话,应该类似这样:

Array
(
[Griffin] => Array
  (
  [0] => Peter
  [1] => Lois
  [2] => Megan
  )
[Quagmire] => Array
  (
  [0] => Glenn
  )
[Brown] => Array
  (
  [0] => Cleveland
  [1] => Loretta
  [2] => Junior
  )
)
例子 2
让我们试着显示上面的数组中的一个单一的值:

echo "Is " . $families['Griffin'][2] .
" a part of the Griffin family?";
以上代码的输出:

Is Megan a part of the Griffin family?

向array中添加元素
php是一个弱类型语言。因此不必象c语言那样为php array声明长度。向其中添加元素的过程也是声明和初始化的过程。
 代码如下:
$capitals = array(
'Alabama' => 'Montgomery',
'Alaska' => 'Juneau',
'Arizona' => 'Phoenix'
);

继续添加元素也很简单
 代码如下:
$capitals['Arkansas'] = 'Little Rock';

如果不是关联数组而只是数字索引的数组可以使用array_push()和array_unshift()函数增加元素
2、从array中删除元素
从数组中移除元素可以使用unset() 函数
 代码如下:
unset($capitals['California']);

也可以使用array_pop()或array_shift()函数从数组头或尾部顺序移除元素
3、array键值互换
如果希望新建数组的键是老数组的值而值是老数组的键,简而言之就是键值对调,则可以使用array_flip()函数完成操作
 代码如下:
$capitals = array(
'Alabama' => 'Montgomery',
'Alaska' => 'Juneau',
'Arizona' => 'Phoenix'
);
$states = array_flip($capitals);
// $states = array(
// 'Montgomery' => string 'Alabama',
// 'Juneau' => string 'Alaska',
// 'Phoenix' => string 'Arizona'
// );

4、合并数组
如果希望将两个或多个数组合并成一个新的数组,array_merge()函数可以帮上这个忙^_^
 代码如下:
$stateCapitals = array(
'Alabama' => 'Montgomery',
'Alaska' => 'Juneau',
'Arizona' => 'Phoenix'
);
$countryCapitals = array (
'Australia' => 'Canberra',
'Austria' => 'Vienna',
'Algeria' => 'Algiers'
);
$capitals = array_merge($stateCapitals, $countryCapitals);

5、修改array中的值
譬如希望将数组的中值全部改为小写后大写首字母,使用回调函数递归地对每个数组成员调用是个不错的方法,php中这个函数是php_map()
 代码如下:
function capitalize($element)
{
$element = strtolower($element);
return ucwords($element);
}
$capitals = array(
'Alabama' => 'montGoMEry',
'Alaska' => 'Juneau',
'Arizona' => 'phoeniX'
);
$capitals = array_map("capitalize", $capitals);

6、根据array的键为数组排序
 代码如下:
$capitals = array(
'Arizona' => 'Phoenix',
'Alaska' => 'Juneau',
'Alabama' => 'Montgomery'
);
ksort($capitals);

7、随机化array元素的顺序
shuffle() 和上面的ksort()函数恰恰相反,可以打乱数组现有的秩序,以达到随机化的目的。
 代码如下:
$capitals = array(
'Arizona' => 'Phoenix',
'Alaska' => 'Juneau',
'Alabama' => 'Montgomery'
);
shuffle($capitals);

8、查找键或值是否存在
查找是否存在值使用in_array()函数
 代码如下:
$capitals = array(
'Arizona' => 'Phoenix',
'Alaska' => 'Juneau',
'Alabama' => 'Montgomery'
);
if (in_array("Juneau", $capitals))
{
echo "Exists!";
} else {
echo "Does not exist!";
}

查找是否存在键使用array_key_exists()函数
 代码如下:
$capitals = array(
'Arizona' => 'Phoenix',
'Alaska' => 'Juneau',
'Alabama' => 'Montgomery'
);
if (array_key_exists("Alaska", $capitals))
{
echo "Key exists!";
} else {
echo "Key does not exist!";
}

9、数组查找
这个是老生常谈了,基本上都用的到array_search()函数
 代码如下:
$capitals = array(
'Arizona' => 'Phoenix',
'Alaska' => 'Juneau',
'Alabama' => 'Montgomery'
);
$state = array_search('Juneau', $capitals);
// $state = 'Alaska'

10、使用php标准函数库
一口气介绍这个多操作array的函数,如果您还觉得不过瘾,可以继续查看Standard PHP Library 中的内容^_^
 代码如下:
$capitals = array(
'Arizona' => 'Phoenix',
'Alaska' => 'Juneau',
'Alabama' => 'Montgomery'
);
$arrayObject = new ArrayObject($capitals);
foreach ($arrayObject as $state => $capital)
{
printf("The capital of %s is %s<br />", $state, $capital);
}
// The capital of Arizona is Phoenix
// The capital of Alaska is Juneau
// The capital of Alabama is Montgomery

 

php教程 获取 radio多选项值代码

<form method=get>
<input type="radio" name="sex" id="sex1" value="1" /><label for="sex1">男朋友</label>
    <input name="sex" id="sex2" type="radio" value="2" checked="checked" /><label for="sex2">女朋友</label>
    <input name="sex" type="radio" id="sex3" value="" checked="checked" /><label for="sex3">不限</label>&nbsp;&nbsp;
<input name="提交" type="submit" />
</form>
<?
if( $_GET )
{
 echo $_GET['sex'] ;
}?>

标签:[!--infotagslink--]

您可能感兴趣的文章: