主要包括数组的学习,具体如下:

 <html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
</head>
<body>
<?php
/*
* 数组
*/
//数组初始化
$php=array('news','bbs','blog','zend');
foreach($php as $temp){
echo $temp." ";
}
echo "<br/>"; /* rangge()函数
* 该函数具有一个可选的第三个参数
*/
//
$test1=range(1,10);
foreach($test1 as $temp){
echo $temp." ";
}
echo "<br/>";
//
$test2=range(1,10,2);
foreach($test2 as $temp){
echo $temp." ";
}
echo "<br/>";
//
$latters=range("a","z");
foreach($latters as $temp){
echo $temp." ";
}
echo "<br/>";
//
$latters[0]="start";
foreach($latters as $temp){
echo $temp." ";
}
echo "<br/>";
//4 for循环的用法
for($i=0;$i<26;$i++){
echo $latters[$i]." ";
}
echo "<br/>"; /*
* 在PHP中定义数组非常灵活,不需要在创建数组时指定数组的大小,
* 甚至不需要在使用数组前先声明,也可以在同一个数组中存储任何类型的数据
* 关联数组和索引数组
*/
//可以使用array来创建一个索引数组
$array=array("bike","car","plane");
print_r($array);
echo "<br/>";//Array ( [0] => bike [1] => car [2] => plane )
//如果要自定义数组的索引,可以通过'=>'来左右链接键值对
$array=array(1=>"bike",3=>"car",6=>"plane");
print_r($array);//Array ( [1] => bike [3] => car [6] => plane )
//以上是索引数组的创建方法,下面看看关联数组的创建方法
$array=array("Jim"=>"bike","Lily"=>"car","Tom"=>"plane");
echo "<br/>".$array['Lily']."<br/>";
//php是一种弱类型语言,使用“[]”来向数组中添加一条数据
$array=array("bike","car","plane");
print_r($array);
echo "<br/>";
$array []="train";
print_r($array);
echo "<br/>"; /*
* print_r()与var_dmp()函数
* print_r()打印关于变量的易于理解的信息。
* var_dmp()打印变量的相关信息
*/
$a = array(1, 2, array("a", "b", "c"));
print_r($a);
echo "<br/>";//Array ( [0] => 1 [1] => 2 [2] => Array ( [0] => a [1] => b [2] => c ) )
var_dump($a);
echo "<br/>";//array(3) { [0]=> int(1) [1]=> int(2) [2]=> array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } } /*
* 当需要在数组头添加元素时,可以使用array_unshift()函数来实现
* int array_unshift(array &array,mixed var [, mixed ...])
* 返回 array 数组新的单元数目。
* 该函数将传入的单元插入到array数组的开头
* ①单元是作为一个真题被出入的,因此传入单元将保持同样的顺序;
* ②所有的数值键名豆浆修改为从零开始重新计数;
* ③所有的文字键名都保持不变
*/
$array= array("bike","car");
$a=array_unshift($array,"train","plane");
echo $a."<br/>";//
var_dump($array);//array(4) { [0]=> string(5) "train" [1]=> string(5) "plane" [2]=> string(4) "bike" [3]=> string(3) "car" }
echo "<br/>"; /*
* 当需要在数组尾添加元素时候可以使用array_push()函数来实现
* int array_push(array &array,mixed var [,mixed ...]);
* 和array_unshift()类似
*/
$array= array("bike","car");
$a=array_push($array,"train","plane");
echo $a."<br/>";//
var_dump($array);
echo "<br/>"; /*
* 当需要从数组头删除元素时可以使用array_shift()函数来实现
* mixed array_shift(array &array);
* 该函数将array的第一个单元移出并作为结果返回
* 如果array为空,则返回NULL
*/
$array=array("bike","car","train");
array_shift($array);
var_dump($array);
echo "<br/>"; /*
* 从数组结尾处删除元素时,可以使用array_pop()函数来实现
* mixed array_pop(array &array)
* 该函数将arary的最后一个单元移除并作为结果返回
*/
$array=array("bike","car","train");
array_pop($array);
var_dump($array);
echo "<br/>"; /*
* 数组的遍历
* 可以使用for循环、foreach循环
* 使用count()函数来获取数组的元素个数
*/
//for循环
$array=array("bike","car","train");
$count=count($array);
for($i=0;$i<$count;$i++){
echo $array[$i]." ";
}
echo "<br/>";
//foreach,1更改foreach()循环的条件,可以将数组以键值对的形式输出
$array=array("mike"=>"bike","zuke"=>"car","tomy"=>"plane","cacy"=>"train","larry"=>"tank");
foreach($array as $k=>$v){
echo "键:".$k."=>值:".$v."<br/>";
}
//foreach,2
$array=array("mike"=>"bike","zuke"=>"car","tomy"=>"plane","cacy"=>"train","larry"=>"tank");
while(list($k,$v)=each($array)){
echo "键:".$k."=>值:".$v."<br/>";
} /*
* 可以很容易地通过在 $value 之前加上 & 来修改数组的元素。
* 此方法将以引用赋值而不是拷贝一个值。
* 数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁
*/
//
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
print_r($arr);// $arr is now array(2, 4, 6, 8)
unset($value); /*
* unset的用法:释放给定的变量
* void unset ( mixed $var [, mixed $... ] )
* unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。
*/
//①如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,
// 而在调用环境中的变量将保持调用 unset() 之前一样的值。
function destroy_foo() {
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo "<br/>".$foo."<br/>";//bar
//如果想在函数中 unset() 一个全局变量,可使用 $GLOBALS 数组来实现:
function foo() {
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
//echo $bar; 变量未定义错误
//②如果在函数中 unset() 一个静态变量,那么在函数内部此静态变量将被销毁。
// 但是,当再次调用此函数时,此静态变量将被复原为上次被销毁之前的值。
function foo1(){
static $bar;
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar = 23;
echo "after unset: $bar<br/>\n";
}
foo1();
foo1();
foo1(); /*
* reset 将数组的内部指针指向第一个单元
* mixed reset(array &$array)
* 返回数组第一个单元的值,如果数组为空则返回FALSE。
*current() - 返回数组中的当前单元
each() - 返回数组中当前的键/值对并将数组指针向前移动一步
end() - 将数组的内部指针指向最后一个单元
next() - 将数组中的内部指针向前移动一位
prev() - 将数组的内部指针倒回一位
*/
$array = array('step one', 'step two', 'step three', 'step four');
// by default, the pointer is on the first element
echo current($array) . "<br />\n"; // "step one"
next($array);
next($array);
echo current($array) . "<br />\n"; // "step three"
reset($array);
echo current($array) . "<br />\n"; // "step one" /*
* list 把数组中的值赋给一些变量
* array list ( mixed $varname [, mixed $... ] )
* 返回指定的数组。
* 和array()一样,这不是真正的函数,而是语言结构
*/
//
$info = array('coffee', 'brown', 'caffeine');
// 列出所有变量
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.<br/>\n";
// 列出他们的其中一个
list($drink, , $power) = $info;
echo "$drink has $power.<br/>\n";
// 或者让我们跳到仅第三个
list( , , $power) = $info;
echo "I need $power!<br/>\n";
// list() 不能对字符串起作用
list($bar) = "abcde";
var_dump($bar); // NULL
//2
echo "<br/>";
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c); /*
* 字符串与数组之间的转换
* 两个函数:implode()和explode()
*/
$array=array("bike","car","plane","train");
echo "<br/>";
print_r($array);
echo "<br/>经过implode处理后的$array<br/>";
$array=implode("---",$array);
echo $array."<br/>";
echo "经过explode处理后的$array<br/>";
$array=explode("---",$array);
print_r($array); /*
* 多维数组以及格式化输出
*/
echo "<pre>";//格式化输出
$array=array("color"=>array("yellow","pink","white"),
"car"=>array("toyota","honda","benz"),
"stationery"=>array("ruler","pen","pencil"));
var_dump($array);
echo "</pre>"; /*
* 数组排序:sort()和rsort()
* 这两个函数可以接受两个参数:一个是需要排序的数组,一个是指定排序的方式*
* 第二个参数可以为SORT_REGULAR,SORT_NUMBERIC,SORT_STRING,SORT_LOCALE_STRING
*/
$array=array(31,55,12,77,21,123);
sort($array);
print_r($array);
echo "<br/>";
rsort($array);
print_r($array); /*
* 排序函数:asort()和arsort()
* 他们和sort和rsort的排序功能和传入参数都一样,唯一的区别在于
* 经过sort()排序后的数组的键会重新分配,而asort则会保持数据原有的键值对。
*/
$array=array(1=>"plane",3=>"bike",6=>"car",9=>"train");
asort($array);
echo "<br/>";
print_r($array);
echo "<br/>";
arsort($array);
print_r($array); /*
* 数组排序函数:ksort()和krsort()
* ksort()和sort()的区别是sort()为数组中的值排序,而ksort()为数组中的键排序
*/
$array=array(1=>"plane",3=>"bike",6=>"car",9=>"train");
ksort($array);
echo "<br/>";
print_r($array);
echo "<br/>";
krsort($array);
print_r($array); /*
* 随机排序函数:shuffle()
* 该函数会将数组中的值随机排序,并初始化所有的键以整数0开始,1为步长增加
*/
$array=array(1=>"plane",3=>"bike",6=>"car",9=>"train");
shuffle($array);
echo "<br/>";
print_r($array); /*
* 对多个数组或多维数组进行排序的函数array_multisort()
* bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $... ]]] )
* 成功时返回 TRUE, 或者在失败时返回 FALSE。
* 关联(string)键名保持不变,但数字键名会被重新索引。
* ① 排序顺序标志:SORT_ASC,SORT_DESC
* ② 排序类型标志:
SORT_REGULAR——将项目按照通常方法比较
SORT_NUMERIC——将项目按照数值比较
SORT_STRING——将项目按照字符串比较
*/
//1 对多个数组排序
$ar1 = array(20, 110, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, SORT_ASC, SORT_STRING, $ar2, SORT_ASC, SORT_NUMERIC);
echo "<br/>".implode(" ",$ar1);//0 100 110 20
echo "<br/>".implode(" ",$ar2);//1 2 3 4
//2 对多维数组排序
$grade=array("score"=>array(70,95,70.0,60,"70"),
"name"=>array("zhang san","li si","wang wu","zhao liu","liu qi"));
array_multisort($grade["score"],SORT_NUMERIC,SORT_DESC,
$grade["name"],SORT_STRING,SORT_ASC);
echo "<pre>";
print_r($grade);
echo "</pre>"; /*
* 判断一个值是否在数组中:in_array()
* bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
* 如果找到 needle 则返回 TRUE,否则返回 FALSE。
* ① 在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。
* ② 如果 needle 是字符串,则比较是区分大小写的。
* ③ 如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
*/
//
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix<br>";
}
//
$a = array('1.10', 12.4, 1.13);
if (in_array('12.4', $a, true)) {
echo "'12.4' found with strict check<br/>\n";//不执行,类型不同
} /*
* 判断某个键值或索引是否存在于数组中:array_key_exists()
* bool array_key_exists ( mixed $key , array $search )
* 成功时返回 TRUE, 或者在失败时返回 FALSE。
*/
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
echo "The 'first' element is in the array<br/>";
} /*
* 数组合并函数:array_merge()
* array array_merge ( array $array1 [, array $... ] )
* 返回结果数组。
* ① 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面;
* ② 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
③ 如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
*/
//
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
echo "<br/>";
//
$array2 = array(1 => "data");
$result = array_merge($array2);
print_r($result);
echo "<br/>"; /*
* 数组合并函数:array_combine
* 该函数作用:创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
* array array_combine ( array $keys , array $values )
* 返回合并的 array,如果两个数组的单元数不同则返回 FALSE。
*/
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
print_r($c);
echo "<br/>"; /*
* 数组拆分函数array_chunk()
* array array_chunk ( array $input , int $size [, bool $preserve_keys = false ] )
* 得到的数组是一个多维数组中的单元,其索引从零开始,每一维包含了 size 个元素。
* ① 将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个。
* ② preserve_keys设为TRUE,可以使 PHP 保留输入数组中原来的键名。
如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。
*/
$input_array = array('a', 'b', 'c', 'd', 'e');
echo "<pre>";
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
echo "</pre>"; /*
* 返回数组交集的函数:array_intersect()
* array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
* 返回一个数组,该数组包含了所有在array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
*/
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);//Array ( [a] => green [0] => red )
echo "<br/>"; /*
* 将数组转换成标量变量:extract()
* int extract ( array &$var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix = NULL ]] )
* 返回成功导入到符号表中的变量数目。
* ① var_array 一个关联数组。此函数会将键名当作变量名,值作为变量的值。
* ② 对待非法/数字和冲突的键名的方法将根据 extract_type 参数决定。可以是以下值之一:
EXTR_OVERWRITE 如果有冲突,覆盖已有的变量。
EXTR_SKIP 如果有冲突,不覆盖已有的变量。
EXTR_PREFIX_SAME 如果有冲突,在变量名前加上前缀 prefix。
EXTR_PREFIX_ALL 给所有变量名加上前缀 prefix。
EXTR_PREFIX_INVALID 仅在非法/数字的变量名前加上前缀 prefix。
EXTR_IF_EXISTS 仅在当前符号表中已有同名变量时,覆盖它们的值,其它的都不处理。
EXTR_PREFIX_IF_EXISTS 仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。
EXTR_REFS 将变量作为引用提取。
* ③ 前缀和数组键名之间会自动加上一个下划线。
*/
$size = "large";
$var_array = array("color1" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color1, $size, $shape,$wddx_size<br/>\n"; /*
* 快速初始化数组
* range()函数
* array range ( mixed $start , mixed $limit [, number $step = 1 ] )
*/
foreach (range(0, 12) as $number) {
echo $number." ";
}
echo "<br/>"; /*
* array_fill()函数
* array array_fill ( int $start_index , int $num , mixed $value )
* 该函数用value参数的值将一个数组填充num个条目,键名由start_index参数指定的开始。
* 插入元素的数量num必须大于 0。
*/
$a = array_fill(5, 3, 'banana');
$b = array_fill(-2, 4, 'pear');
print_r($a);//Array ( [5] => banana [6] => banana [7] => banana )
echo "<br/>";
print_r($b);//Array ( [-2] => pear [0] => pear [1] => pear [2] => pear ) /*
* 在数组中茶轴值:array_search()
* mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
* 如果找到了 needle 则返回它的键,否则返回 FALSE。
* ① 如果 needle 是字符串,则比较以区分大小写的方式进行。
* ② 如果可选的第三个参数strict为TRUE,则该函数将在haystack中检查完全相同的元素。
*/
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
echo "<br/>".array_search('green', $array)."<br/>"; // $key = 2; /*
* 获取数组键函数array_keys
* array array_keys ( array $input [, mixed $search_value = NULL [, bool $strict = false ]] )
* 返回input里的所有键。
* ① 如果指定了可选参数search_value,则只返回该值的键名。否则input数组中的所有键名都会被返回;
* ② strict 判断在搜索的时候是否该使用严格的比较(===)。
*/
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));//Array ( [0] => 0 [1] => color )
echo "<br/>";
$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));//Array ( [0] => 0 [1] => 3 [2] => 4 )
echo "<br/>";
$array = array("color" => array("blue", "red", "green"),
"size" => array("small", "medium", "large"));
print_r(array_keys($array));//Array ( [0] => color [1] => size )
echo "<br/>"; /*
* 获取数组值函数:array_values()函数
* array array_values ( array $input )
* array_values() 返回 input 数组中所有的值并给其建立数字索引。
*/
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));//Array ( [0] => XL [1] => gold )
echo "<br/>";
?>
</body>
</html>

【php】基础学习2的更多相关文章

  1. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  2. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  3. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  4. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  5. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  6. python入门到精通[二]:基础学习(1)

    摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...

  7. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  8. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  9. Yaf零基础学习总结4-Yaf的配置文件

    在上一节的hello yaf当中我们已经接触过了yaf的配置文件了, Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置 ...

  10. qml基础学习 Canvas画笔

    一.画布元素 自qt4.7发布qml以来,qml也在一直不断的完善中,在qt4时代使用qml时如果需要异形图,那我们只能让设计师来切图,这样的感觉是很不爽的,总感觉开发没有那么犀利.但是到了qt5这一 ...

随机推荐

  1. C语言:自定义一个查找字串的功能函数,类似于<string.h>中的strstr()

    //自定义一个字符串字串查找标准库函数strstr() #include<stdio.h> #include<string.h> char* myStrstr(char *st ...

  2. Informatica 常用组件Lookup之八 查找高速缓存

    可以配置查找转换以高速缓存查找文件或表.PowerCenter 将在处理高速缓存查找转换中的第一个数据行时在存储器中建立高速缓存.它将根据您在转换或会话特性中配置的数量来分配高速缓存区内存.Power ...

  3. uva 10160 Servicing Stations(DFS+剪枝)

    Servicing stations A company offers personal computers for sale in N towns (3 <= N <= 35). The ...

  4. go语言之进阶篇值语义和引用语义

    1.值语义和引用语义 示例: package main import "fmt" type Person struct { name string //名字 sex byte // ...

  5. 远程视频监控之应用篇(mjpg-streamer)

    这篇文章将主要结合源码介绍mjpg-streamer,使小伙伴们了解视频监控的实现. 一.移植 tar xvf mjpg-streamer-r63.tar.gz cd mjpg-streamer-r6 ...

  6. mysql数据库查询优化

    上两周一直想办法提高查询速度,取得一点效果,解决了部分问题,记下来以便将来自己查看. 由于公司没有专门的DBA,我自己对mysql数据库也不是很熟悉,而且这个JAVA开发的网络审计系统的管理系统,是经 ...

  7. C# 特性(Attribute)(一)

    特性(Attributes)是一种崭新的声明性信息.我们不仅可以通过特性来定义设计层面的信息(例如help file, URL for documentation)以及运行时(run-time)信息( ...

  8. T-SQL with as 的用法(转) SQL 下的递归查询 SQL2005(CTE) ,SQL2000(Function 递归)

    摘自: http://blog.csdn.net/bluefoxev/article/details/6779794 ------- SQL2005 方法 一.WITH AS的含义     WITH ...

  9. 2015年末分享:利用RS修改用户密码

    马上就要2016农历新年了,送点什么给大家呢?我觉得还是分享点技术吧.前不久用户在抱怨为什么登录Cognos Connection的密码不能让我们自己改?相信Cognos开发的很多人知道,Cognos ...

  10. [NPM] Execute npx commands with $npm_ Environment Variables

    We will incorporate npm specific environment variables when executing various npx commands. In our e ...