批改状态:合格
老师批语:为什么下面一定要加上小草图片
栈和队列是添加与删除受限的一种数据结构,数据的增删只允许在一端进行。
$stack=[];//array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度echo array_push($stack,'php','html','css');print_r($stack);echo '<br>';//array_pop() 函数删除数组中的最后一个元素,出栈 并返回被删除元素的值array_pop($stack);array_pop($stack);//连续删除两个元素print_r($stack);echo '<hr>';

$stack2=[];/*array_unshift() 向数组插入新元素。插入到数组的开头。返回数组中元素的个数。*/echo array_unshift($stack2,'c','java','asp');print_r($stack2);echo '<br>';//array_shift() 函数删除数组中第一个元素,并返回被删除元素的值。array_shift($stack2);print_r($stack2);echo '<hr>';echo '<hr>';

$stack3=[];echo array_push($stack3,10,20,30);print_r($stack3);echo '<br>';array_shift($stack3);//删除10array_shift($stack3);//删除20echo array_unshift($stack3,'100','一千');echo '<br>';print_r($stack3);


echo '键的操作<br>';$arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];$keys=[];/* 拿到每一个键,这样也可以echo key($arr);next($arr);echo key($arr);*/while (key($arr)){ //因为循环条件没有更新,所以不能用while(true)$keys[]=key($arr);next($arr);}print_r($keys);

$arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];print_r(array_keys($arr));

$arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];echo array_key_exists('name',$arr)?'存在':'不存在';

$arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];echo array_key_first($arr);

$arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];echo array_key_last($arr);


$arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];$key2=[];print_r($arr2);echo '<br>';foreach($arr2 as $value){$key2[]=$value;}print_r($key2);echo '<br>';

$arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];print_r(array_values($arr2));

$arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];echo in_array('php',$arr2)?'存在':'不存在';

$arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];var_dump(array_search('php',$arr2));echo '-----';var_dump(array_search('php2',$arr2));echo '<br>';

$arr2=[2=>3.14,8=>9.9,'name'=>'php',19=>9.9,20=>'html',50];print_r(array_unique($arr2));

$arr3=[10,20,30,'123','php100'];echo array_sum($arr3);

$arr3=[10,20,30,'123','php100'];echo array_product($arr3); //最后一个字符串被判定为0


$arr=[30,2,80,16,26,'html','abc',62];print_r($arr);echo '<hr>sort按值排序函数<br>';sort($arr); //默认按值的升序排。 字符串视为0, 键名也会发生变化print_r($arr);

$arr2=[30,2,80,16,26,'html','abc',62];asort($arr2); //默认按值的升序排 键名不会发生变化print_r($arr2);

$arr3=['d'=>30,'f'=>20,'a'=>15];print_r($arr3);echo '<hr>ksort按键升序来排序<br>';ksort($arr3); //默认按键的升序排print_r($arr3);

$arr3=['d'=>30,'f'=>20,'a'=>15];krsort($arr3); //默认按键的降序排print_r($arr3);

//usort(array,myfunction); 可选。定义可调用比较函数的字符串。如果第一个参数小于等于或大于第二个参数,//那么比较函数必须返回一个小于等于或大于 0 的整数。$arr4=[26,51,2,95,120,64,82,12];usort($arr4,function($a,$b){return($a-$b);});print_r($arr4);

$arr5=['img3.jpg','img5.jpg','img10.jpg','img8.jpg'];print_r($arr5);echo '<br>排序后是<br>';natsort($arr5);print_r($arr5);


/* 从数组中取出一些元素 ,并返回 array_slice(array必需,start必需,length规定被返回数组的长度,preserve规定函数是保留键名还是重置键名,true - 保留键名 false - 默认。重置键名) */$arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男','wife'=>'8'];print_r (array_slice($arr,1,3));

/*array_splice(array必需,start必需,length可选,array2可选)array_splice() 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。提示:如果函数没有移除任何元素(length=0),则将从 start 参数的位置插入被替换数组。注释:不保留被替换数组中的键名。*/$arr2=[5,6,12,54,0,89,120,4,68];//删除print_r(array_splice($arr2,1,2)); //返回被删除的元素6,12echo '<br>';print_r($arr2);//重新打印

$arr2=[5,6,12,54,0,89,120,4,68];$arr3=['h','a'];print_r(array_splice($arr2,2,2,$arr3));//返回被删除的元素0,89echo '<br>';print_r($arr2);//重新打印

//新增$arr4=[5,6,12];$arr5=['bbb','ccc'];array_splice($arr4,2,0,$arr5);print_r($arr4);

/*array_combine() 函数通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。注释:键名数组和键值数组的元素个数必须相同!如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false。*/$keys=['type','host','datebasename','username','password'];$values=['mysql','localhost','phpcn','root','root'];print_r(array_combine($keys,$values));


/*array_filter(array必需,callbackfunction必需规定要使用的回调函数。);函数用回调函数过滤数组中的值。该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。 False的不返回 。数组键名保持不变。*///过滤掉数组中的非字符串$arr=['50','abc',20,true,null,'hello'];print_r(array_filter($arr,function($item){return is_string($item);}));

/*array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。提示:您可以向函数输入一个或者多个数组。*///将原数组中的对象元素 输出他的属性值。数组元素输出字符串,整型转化成字符串,其它的原样输出。$arr2=[50,'abc',['bb','aa','cc'],(new class{public $name='张工';public $age=25;}),100,200];$res=array_map(function($item){switch(gettype($item)){case 'object':$item=get_object_vars($item);$item=implode(',',$item) ;break;case 'array':$item=implode(',',$item) ;break;case 'integer':$item=(string)($item);}return $item;},$arr2);print_r($res);


$arr=['host'=>'localhost','dbname'=>'datebase','username'=>'root','password'=>'root'];extract($arr);echo $host;

$id=10;$name='张三';$age='25';$sex='male';$res=compact('id','name','sex','age');print_r($res);


Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号