PHP数组与数据结构的函数,查找操作方法详解

1.遍历后压入反转数组,输出
2.array_unshift — 在数组初步插入一个或三个单元,将盛传的单元插入到
array 数组的上马
int array_unshift ( array &$array , mixed $value1 [, mixed $… ] )

6.5.18 PHP数组与数据结构的函数

count函数

php删除特定数组值

<?php
class Node{
        public $data;
        public $next;
}
//创建一个链表
$linkList=new Node();
$linkList->next=null;
$temp=$linkList;
for($i=1;$i<=10;$i++){
        $node=new Node();
        $node->data="aaa{$i}";
        $node->next=null;
        $temp->next=$node;
        $temp=$node;
}
function printListFromTailToHead($linkList){
        $arr=array();
        $p=$linkList;
        while($p->next!=null){
                $p=$p->next;
                array_unshift($arr,$p->data);
        }
        return $arr;
}
$arr=printListFromTailToHead($linkList);
var_dump($arr);

数组与数据结构

功能:总计数组中元素的个数或对象的属性个数

首先

 

array_pop — 将数组最终一个单元弹出(出栈)
语法:mixed array_pop ( array &array )
array_pop() 弹出并再次回到 array 数组的末尾一个单元,并将数组 array
的尺寸减一。借使 array 为空(或者不是数组)将赶回 NULL。

返回值:

  1. 数组或者目标, 重回数组的单元个数或者目的的质量个数
  2. Null,返回0
  3. 非数组,也非NULL,通通重回1

    <?php
    $arr=array('春','夏','秋','冬');
    echo count($arr);//4
    echo '<br/>';
    
    $str='false';
    echo count($str);//1
    echo '<br/>';
    
    $res=null;
    echo count($res);//0
    echo "<br/>";
    
    $arr=array('春','夏','秋','冬',array('a','b','c'));
    echo count($arr),'<br/>';//5
    echo count($arr,1),'<br/>';//第2个参数为1时,代表递归的来计算数组的单元个数
    
    $arr=array('春','夏','秋','冬',array('a',array('b','c')));
    echo count($arr,1),'<br/>';
    ?>
    

    range函数

    ### 作用:建立一个饱含指定范围单元的数组

    ### 重返值:再次来到的数组中从 start 到 limit 的单元,包蕴它们本身。

    <?php
    $arr=range(0,20);
    foreach($arr as $v){
     echo $v.'<br/>';
    }
    $arr=range(0,20,2);
    foreach($arr as $k=>$v){
      echo $k.'###'.$v.'<br/>';
    }
    ?>
    

    array_flip函数 array array_flip ( array $trans )

    ### 成效:互换键值

    ### 参数:array $trans 要交流键/值对的数组。

    ### 再次来到值:成功时回来互换后的数组,若是败北再次来到 NULL。键值对调后,出现2个一律的键,后边的会覆盖前边的键

    <?php
    $arr=array('a'=>1,'b'=>2,'c'=>3);
    print_r($arr);//Array ( [0] => a [1] => b [2] => c ) 
    print_r(array_flip($arr));//Array ( [a] => 0 [b] => 1 [c] => 2 ) 
    ?>
    

    array_sum函数 number array_sum ( array $array )

    ### 作用:计算数组中所有值的和,将数组中的所有值的和以平头或浮点数的结果再次来到。

    ### 参数:array 输入的数组。

    ### 再次来到值:所有值的和以平头或浮点数的结果再次来到

    <?php
    $arr=range(1,100);
    print_r($arr);
    echo array_sum($arr);
    ?>
    

    shuffle函数 bool shuffle ( array &$array )

    ### 作用: 将数组打乱

    ### 参数:array 待操作的数组

    ### 再次回到值:成功时重回 TRUE, 或者在挫折时回来 FALSE。该函数是援引传值

    <?php
    $arr=range(1,100);
    print_r($arr);
    echo array_sum($arr);
    if(shuffle($arr)){
    echo '打乱成功';
    print_r($arr);//
       }
    ?>
    

    array_reverse函数 array array_reverse ( array $array [, bool $preserve_keys = false ] )

    ### 功能:接受数组 array 作为输入并重临一个单元为相反顺序的新数组。

    ### 参数:array 输入的数组。preserve_keys 要是设置为 TRUE 会保留数字的键。 非数字的键则不受这几个装置的影响,总是会被封存。

    ### 再次回到值:重临反转后的数组。

    <?php
    
    $arr = array('a'=>'春','b'=>'夏','c'=>'秋','d'=>'冬'); 
    print_r($arr); //Array ( [a] => 春 [b] => 夏 [c] => 秋 [d] => 冬 )
    print_r(array_reverse($arr)); //Array ( [d] => 冬 [c] => 秋 [b] => 夏 [a] => 春 )
    $arr = array('春','夏','秋','冬'); 
    print_r($arr); 
    print_r(array_reverse($arr)); 
    print_r(array_reverse($arr,true));
    ?>
    

    array_push函数 int array_push ( array &$array , mixed $var [, mixed $… ] )

    ### 成效:将一个或两个单元压入数组的尾声(入栈)

    ### 参数:array 输入的数组。 var 要压入的值。

    ### 再次回到值:重临处理未来数组的要素个数。

    <?php
    $stack = array("orange", "banana");
    array_push($stack, "apple", "raspberry");
    print_r($stack);
    ?> 
    

    array_pop函数 mixed array_pop ( array &$array )

    ### 功能:将数组最后一个单元弹出(出栈)

    ### 参数:array 须求做出栈的数组。

    ### 再次来到值:再次回到 array 的最后一个值。假若 array 是空(即使不是一个数组),将会回到 NULL 。

    <?php
    $stack = array("orange", "banana", "apple", "raspberry");
    $fruit = array_pop($stack);
    print_r($stack);
    ?> 
    

    array_shift函数 mixed array_shift ( array &$array )

    ### 功能:将数组起先的单元移出数组

    ### 参数:array 输入的数组。

    ### 再次来到值:再次来到移出的值,假诺 array 为 空或不是一个数组则赶回 NULL。

    <?php
    $stack = array("orange", "banana", "apple", "raspberry");
    $fruit = array_shift($stack);
    print_r($stack);
    ?> 
    

    array_unshift函数 int array_unshift ( array &$array , mixed $var [, mixed $… ] )

    ### 成效:在数组开首插入一个或三个单元

    PHP数组与数据结构的函数,查找操作方法详解。### 参数:array 输入的数组。 var 起首插入的变量。

    ### 重返值:重回 array 数组新的单元数目。

    <?php
    $queue = array("orange", "banana");
    array_unshift($queue, "apple", "raspberry");
    print_r($queue);
    ?>
    

    explode函数 array explode ( string $delimiter , string $string [, int $limit ] )

    ### 效用:此函数重临由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来

    ### 再次来到值:再次来到由字符串组成的 array,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。

    <?php
    $str = 'abc,中国,美国,日本';
    $arr = explode(',',$str); 
    print_r($arr);//Array ( [0] => abc [1] => 中国 [2] => 美国 [3] => 日本 )
    ?>
    

    implode函数 string implode ( string $glue , array $pieces )或者string implode ( array $pieces )

    ### 效率:将一个一维数组的值转化为字符串

    ### 参数:glue 默许为空的字符串。 pieces 你想要转换的数组。

    ### 再次回到值:重临一个字符串,其情节为由 glue 分割开的数组的值。

    <?php
    $str = 'abc,中国,美国,日本';
    $arr = explode(',',$str); 
    print_r($arr);
    $arr = explode(',',$str); 
    echo implode('~',$arr),'<br />';
    echo implode($arr);
    ?>
    

 代码如下

array_push — 将一个或多少个单元压入数组的末梢(入栈)
语法:int array_push ( array &array, mixed var [, mixed …] )
array_push() 将 array 当成一个栈,并将盛传的变量压入 array
的末段。array 的长度将根据入栈变量的数码扩大。

var_dump($context[‘linktree’]);

array_shift — 将数组初步的单元移出数组

得到

语法:mixed array_PHP数组与数据结构的函数,查找操作方法详解。shift ( array &array )
array_shift() 将 array 的率先个单元移出并视作结果回到,将 array
的长度减一并将具有其余单元向前挪动一位。所有的数字键名将改为从零先河计数,文字键名将不变。倘诺array 为空(或者不是数组),则赶回 NULL。

 代码如下

array_unshift — 在数组开头插入一个或多个单元
语法: int array_unshift ( array &array, mixed var [, mixed …] )
array_unshift() 将盛传的单元插入到 array
数组的初阶。注意单元是当做完整被插入的,因而传出单元将维持一如既往的依次。所有的数值键名将修改为从零开端重新计数,所有的文字键名保持不变。

array(3) {
[0]=>
array(2) {
[“url”]=>
string(52) “
[“name”]=>
string(28) “City of Steam Official Forum”
}
[1]=>
array(2) {
[“url”]=>
string(55) “
[“name”]=>
string(28) “City of Steam Official Forum”
}
[2]=>
array(2) {
[“url”]=>
string(62)

[“name”]=>
string(12) “Announcement”
}
}

例1.php

本身要去掉中间这一个。

<?php
    $zhan = array();

    array_push($zhan, "1");
    array_push($zhan, "2");
    array_push($zhan, "3", 4, 5,6);


    echo array_pop($zhan)."<br>";
    echo array_pop($zhan)."<br>";
    echo array_pop($zhan)."<br>";

    print_r($zhan);

用:unset($context[‘linktree’][‘1’]);

例2.php

结果:

<?php
    $dl = array();

    array_unshift($dl, 1);
    array_unshift($dl, 2);
    array_unshift($dl, 3);
    array_unshift($dl, 4);
    array_unshift($dl, 5);
    array_unshift($dl, 6);

    echo array_shift($dl)."<br>";

    print_r($dl);

 代码如下

array(2) {
[0]=>
array(2) {
[“url”]=>
string(52) “
[“name”]=>
string(28) “City of Steam Official Forum”
}
[2]=>
array(2) {
[“url”]=>
string(62)

[“name”]=>
string(12) “Announcement”
}
}

就少了一个[1]

让那当中的1机关编号:

 代码如下

Array ( [0] => apple [1] => banana [3] => dog )

然则那种艺术的最大弱点是从未重建数组索引,就是说,数组的第多少个元素没了。
www.5929.com,经过查资料后,原来PHP提供了那些效用,只可是很直接。这一个函数是array_splice()。
为了使用方便,我封装成了一个函数,方便大家使用:

 代码如下

<?php

function array_remove(&$arr, $offset)

{
 
array_splice($arr, $offset, 1);

}

$arr = array(‘apple’,’banana’,’cat’,’dog’);
 
array_remove($arr, 2);
 
print_r($arr);

?>

经过测试可以领悟,2的岗位那个元素被真正的删除了,并且重新创制了目录。

程序运行结果:

 代码如下

Array ( [0] => apple [1] => banana [2] => dog )

php判断 数组中的数值

有特意的函数,不要用for循环,系统函数能兑现长足搜索:

in_array
(PHP 4, PHP 5)

in_array — 检查数组中是否存在某个值

说明
bool in_array ( mixed $needle, array $haystack [, bool $strict] )

在 haystack 中摸索 needle,假使找到则赶回 TRUE,否则重临 FALSE。

假定第多个参数 strict 的值为 TRUE 则 in_array() 函数还会检讨 needle
的门类是或不是和 haystack 中的相同。

注意: 假设 needle 是字符串,则相比是分别轻重缓急写的。

瞩目: 在 PHP 版本 4.2.0 此前,needle 不允许是一个数组。

例 292. in_array() 例子

 代码如下

<?php
$os = array(“Mac”, “NT”, “Irix”, “Linux”);
if (in_array(“Irix”, $os)) {
    echo “Got Irix”;
}
if (in_array(“mac”, $os)) {
    echo “Got mac”;
}
?>

其次个标准化战败,因为 in_array() 是分别轻重缓急写的,所以上述程序突显为:

Got Irix

例 293. in_array() 严谨项目检查例子

 代码如下

<?php
$a = array(‘1.10’, 12.4, 1.13);

if (in_array(‘12.4’, $a, true)) {
    echo “‘12.4’ found with strict checkn”;
}
if (in_array(1.13, $a, true)) {
    echo “1.13 found with strict checkn”;
}
?>
上例将出口:

1.13 found with strict check

例 294. in_array() 中用数组作为 needle

 代码如下

<?php
$a = array(array(‘p’, ‘h’), array(‘p’, ‘r’), ‘o’);

if (in_array(array(‘p’, ‘h’), $a)) {
    echo “‘ph’ was foundn”;
}
if (in_array(array(‘f’, ‘i’), $a)) {
    echo “‘fi’ was foundn”;
}
if (in_array(‘o’, $a)) {
    echo “‘o’ was foundn”;
}
?>
上例将出口:

  ‘ph’ was found
  ‘o’ was found

向一个数组中加入数值

我们得以经过函数来促成,将一个或多少个元素插入到数组中去,也可以直接助长进去。
(1)向数组中一贯抬高数据,新元素的下标是从原数组下标最大值之后初步的。
(2)array_unshift()函数在数组的启幕添加一个或七个因素。
语法如下:
int array_unshift ( array &array, mixed var [,mixed …]) ;
array_unshift()将盛传的要素插入到array数组的初始。元素是用作全部被插入的,传入元素将保持同等的各种。所有的数值键名将从0开首重复计数,文字键名保持不变。
(3)array_push()函数将一个或七个单元添加到数组的最终。
语法:
int array_push ( array &array, mixed var [, mixed …]) ;
array_push()将array当成一个栈,并将盛传的变量添加到array的尾声。该函数重返数组新的单元总数。向数组中添加多少的以身作则如下。
示例:

 代码如下

<?php
$shili = array (“1″,”2″,”3″,”4″) ;
$shili[]=5 ;                            //直接抬高数据
print_r ( $shili ) ;
echo “<br>” ;
$shili2 = array (“m”,”n”) ;
array_unshift ($shili2,”o”,”p”) ;          //添英镑素于数组的起来
print_r ( $shili2 ) ;
echo “<br>” ;
$shili3 = array (“Php”) ;
array_push ($shili3, “MySQL”,”Apache”) ; //添法郎素于数组的最后
print_r ($shili3) ;
?>
结果为:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4]
=> 5 )
Array ( [0] => o [1] => p [2] => m [3] => n )
Array ( [0] => Php [1] => MySQL [2] => Apache )

Leave a Comment.