程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php基礎知識總結(1)數組array,基礎知識array

php基礎知識總結(1)數組array,基礎知識array

編輯:關於PHP編程

php基礎知識總結(1)數組array,基礎知識array


一、排序
    1、asort -- 正向排序,保持索引關系
    2、arsort --逆向排序,保持索引關系
    3、sort -- 從最低到最高排序
    4、ksort --按照鍵名排序
    5、krsort --按照鍵名逆向排序
    6、rsort -- 逆向排序(最高到最低),刪除原有的鍵名,賦予新的鍵名【字母比數字高】
        (1)純英文:$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
                   asort($fruits);//Array ( [c] => apple [b] => banana [d] => lemon [a] => orange )
        (2)純數字:$fruits = array("d" => "341", "a" => "524", "b" => "75", "c" => "657");
                   asort($fruits);//Array ( [b] => 75 [d] => 341 [a] => 524 [c] => 657 )
        (3)混合:$fruits = array("d" => "daf", "a" => "fasd", "b" => "234", "c" => "657");
                  asort($fruits);//Array ( [b] => 234 [c] => 657 [d] => daf [a] => fasd ) 先數字後字母    
                  
    7、natsort --用“自然排序”算法排序
    8、natcasesort --用“自然排序”算法進行排序,不區分大小寫
    9、usort -- 使用用戶自定義的比較函數對數組中的值進行排序,刪除原有的鍵名
    10、uasort --使用用戶自定義的比較函數對數組中的值進行排序並保持索引關聯
    11、uksort --使用用戶自定義的比較函數對數組中的鍵名進行排序
    
    12、array_multisort -- 對多個數組或多維數組進行排序,關聯鍵名保持不變,但數字鍵名會被重新索引。第一個參數必須是一個數組    
    13、array_reverse --  返回一個單元順序相反的數組
        $input  = array("php",array("green", "red"));
        $result = array_reverse($input);//Array([0] => Array([0] => green,[1] => red),[1] => php)
        $res = array_reverse($input, TRUE);//true表示保留原來的鍵名


二、key和value
    1、key -- 返回數組中當前單元的鍵名。
    
    2、array_key_exists -- 檢查給定的鍵名或索引是否存在於數組中,也可用於對象
        $search_array = array('first' => 1, 'second' => 4);
        array_key_exists('first', $search_array));//存在時返回 TRUE
        
    3、array_keys -- 返回數組中所有的鍵名
        $array = array(0 => 100, "color" => "red");
        print_r(array_keys($array));//Array([0] => 0,[1] => color)
    
    4、array_values -- 返回數組中所有的值
        $array = array("size" => "XL", "color" => "gold");
        print_r(array_values($array));//Array([0] => XL [1] => gold)
    
    5、array_count_values -- 統計數組中所有的值出現的次數
        $array = array(1, "hello", 1, "world", "hello");
        print_r(array_count_values ($array));//Array([1] =>2,[hello] =>2,[world] => 1)

    6、array_flip -- 交換數組中的鍵和值,如果同一個值出現多次,只取最後一個,其它的都丟失。
        $trans = array("a" => 1, "b" => 1, "c" => 2);
        $trans = array_flip($trans);//Array([1] => b,[2] => c)        
        
    7、array_search --  在數組中搜索給定的值,如果成功則返回相應的鍵名
        $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
        $key = array_search('green', $array); // $key = 2;
        $key = array_search('red', $array);   // $key = 1;
    
    8、array_sum --  計算數組中所有值的和
        $a = array(2, 4, 6, 8);
        echo "sum(a) = ".array_sum($a);//20
        
        
三、交集和差集
    1、array_diff -- 計算數組的差集,返回數組,鍵名不用於比較
        $array1 = array("a" => "green", "red", "blue", "red");
        $array2 = array("b" => "green", "yellow", "red");
        $result = array_diff_assoc($array1, $array2);//Array([1] => blue)    
        
    2、array_diff_assoc -- 帶索引檢查計算數組的差集,返回數組,鍵名也用於比較,可多個數組比較
        $array1 = array ("a" => "green", "b" => "brown", "c" => "blue", "red");
        $array2 = array ("a" => "green", "yellow", "red");
        $result = array_diff_assoc($array1, $array2);//Array([b] =>brown,[c] =>blue,[0] =>red)    
        
    3、array_diff_uassoc -- 用用戶提供的回調函數做索引檢查來計算數組的差集
        function func($a, $b){if ($a === $b) {return 0;}}
        $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
        $array2 = array("a" => "green", "yellow", "red");
        $result = array_diff_uassoc($array1, $array2, "func");//Array([b] =>brown,[c] =>blue,[0] =>red)    
        
    4、array_intersect -- 計算數組的交集,鍵名不用於比較
        $array1 = array("a" => "green", "red", "blue");
        $array2 = array("b" => "green", "yellow", "red");
        $result = array_intersect($array1, $array2);//Array([a] =>green,[0] =>red)
        
    5、array_intersect_assoc -- 帶索引檢查計算數組的交集,鍵名也用於比較
        $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
        $array2 = array("a" => "green", "yellow", "red");
        $result_array = array_intersect_assoc($array1, $array2);//Array([a] => green)


四、指針操作
    1、current -- 返回數組中的當前單元
    2、reset --  將數組的內部指針指向第一個單元
    3、end --  將數組的內部指針指向最後一個單元
    4、next --  將數組中的內部指針向前移動一位
    5、prev -- 將數組的內部指針倒回一位
        $transport = array('foot', 'bike', 'car', 'plane');
        $mode = current($transport); // $mode = 'foot';
        $mode = next($transport);    // $mode = 'bike';
        $mode = next($transport);    // $mode = 'car';
        $mode = prev($transport);    // $mode = 'bike';
    6、each --  返回數組中當前的鍵/值對並將數組指針向前移動一步
        返回為四個單元的數組,鍵名為 0,1,key 和 value。單元 0 和 key 包含有數組單元的鍵名,1 和 value 包含有數據。
        $foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
        $bar = each($foo);//Array{[1] => bob[value] => bob [0] => 0 [key] => 0}


五、合並
    1、array_merge_recursive -- 將一個或多個數組合並,如果數組中有相同鍵名,後一個值將不會覆蓋原來的值,而是附加到後面。
        $ar1 = array("color" => array("favorite" => "red"), 5);
        $ar2 = array(10, "color" => array("favorite" => "green", "blue"));
        $result = array_merge_recursive($ar1, $ar2);
            //Array([color] => Array([favorite] => Array([0] =>red,[1] =>green),[0] => blue),[0] => 5,[1] => 10)
    
    2、array_merge -- 合並一個或多個數組,如果字符串鍵名後面的將覆蓋前一個,但數字鍵名相同,後面的值將不會覆蓋原來的值,而是附加到後面。
        $array1 = array("color" => "red", 2, 4);
        $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
        $result = array_merge($array1, $array2);
            //Array([color] =>green,[0] =>2,[1] =>4,[2] =>a,[3] =>b,[shape] =>trapezoid,[4] => 4)
                
    3、array_combine --  創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值
        $a = array('green', 'red', 'yellow');
        $b = array('avocado', 'apple', 'banana');
        $c = array_combine($a, $b);//Array([green]=>avocado,[red]=> apple,[yellow] =>banana)
    
六、取值
    1、array_slice(array,offset[,length[,keys]]) -- 從數組中取出一段
        offset非負,從數組中的此偏移量開始,為負,則從數組中距離末端這麼遠的地方開始
        length正,數組中將有length個元素,為負將終止在距離數組末端這麼遠的地方。省略則從offset開始一直到數組的末端。
        keys 設為 TRUE 保留鍵名,否則重置鍵名


    2、array_rand(input,[num_req]) --從數組中隨機取出一個或多個單元,num_req指明要取多少個,默認為 1。
        $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
        $rand_keys = array_rand($input, 2);

七、去值和替代
    1、array_splice (array,offset[,length[,replacement]])-- 把數組中的一部分去掉並用其它值取代 ,數字鍵名不被保留
        $input = array("red", "green", "blue", "yellow");
        array_splice($input, 2);// $input is now array("red", "green")
        
        $input = array("red", "green", "blue", "yellow");
        array_splice($input, 1, -1);// $input is now array("red", "yellow")
        
        $input = array("red", "green", "blue", "yellow");
        array_splice($input, 1, count($input), "orange");// $input is now array("red", "orange")
        
        $input = array("red", "green", "blue", "yellow");
        array_splice($input, -1, 1, array("black", "maroon"));// $input is now array("red", "green","blue", "black", "maroon")
        
        $input = array("red", "green", "blue", "yellow");
        array_splice($input, 3, 0, "purple");// $input is now array("red", "green","blue", "purple", "yellow");
        
        offset:為正,從數組中該值指定的偏移量開始移除,為負,則從末尾倒數該值指定的偏移量開始移除
        length:省略則移除數組中從 offset 到結尾的所有部分。為正則移除這麼多單元。為負則移除從offset到數組末尾倒數 length 為止中間所有的單元
        如果給出了 replacement 數組,則被移除的單元被此數組中的單元替代

    2、array_unique -- 移除數組中重復的值,    
        $input = array("a" => "green", "red", "b" => "green", "blue", "red");
        $result = array_unique($input);//Array([a] => green,0] => red,[1] => blue)
        
        $input = array(4, "4", "3", 4, 3, "3");
        $result = array_unique($input);//array(2) { [0]=> int(4) [2]=> string(1) "3" }

    3、array_pop -- 將數組最後一個單元彈出(出棧),數組的長度減一,使用本函數後會重置數組指針。
        $stack = array("orange", "banana", "apple", "raspberry");
        $fruit = array_pop($stack);
        print_r($stack);//Array([0] => orange,[1] => banana,[2] => apple)
        print_r($fruit);//Array([0] => raspberry)
    
    4、array_shift --  將數組開頭的單元移出數組,數字鍵名將改為從零開始計數,文字鍵名將不變
        $stack = array("orange", "banana", "apple", "raspberry");
        $fruit = array_pop($stack);
        print_r($stack);//Array([0] => banana,[1] => apple,[2] => raspberry)
        print_r($fruit);//Array([0] => orange)


八、插入和填充
    1、array_pad(input,pad_size,pad_value ) --  用值將數組填補到指定長度
        如果 pad_size 為正,則數組被填補到右側,如果為負則從左側開始填補。
        $input = array(12, 10, 9);
        $result = array_pad($input, 5, 0);// result is array(12, 10, 9, 0, 0)
        $result = array_pad($input, -7, -1);// result is array(-1, -1, -1, -1, 12, 10, 9)
        $result = array_pad($input, 2, "noop");// not padded
    
    2、array_push --  將一個或多個單元壓入數組的末尾(入棧)
        $stack = array("orange", "banana");
        array_push($stack, "apple");//Array([0] => orange,[1] => banana,[2] => apple)
    
    3、array_unshift --  在數組開頭插入一個或多個單元,數值鍵名重新計數,文字鍵名保持不變。
        $queue = array("orange", "banana");
        array_unshift($queue, "apple");//Array([0] => apple[1] => raspberry[2] => orange[3] => banana)
    
    4、array_fill(start_index,num,value )-- 用給定的值填充數組
        num: 填充的條目  start_index:指定鍵名的開始 value:填充的值
        $a = array_fill(5, 4, 'banana');//Array([5]=>banana,[6]=>banana,[7]=>banana,[8]=>banana)

九、回調函數
    1、array_filter --  用回調函數過濾數組中的單元
        function odd($var){return($var % 2 == 1);}
        function even($var){return($var % 2 == 0);}
        $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
        $array2 = array(6, 7, 8, 9, 10, 11, 12);

        print_r(array_filter($array1, "odd"));  //Array([a] =>1,[c] =>3,[e] => 5)
        print_r(array_filter($array2, "even")); //Array([0] =>6,[2] =>8,[4] =>10,[6] =>12)     
    
    2、array_map --  將回調函數作用到給定數組的單元上
        function cube($n){return($n * $n * $n);}
        $a = array(1, 2, 3, 4, 5);
        $b = array_map("cube", $a);//Array([0] =>1,[1] =>8,[2] =>27,[3] =>64,[4] =>125)
    
    3、array_reduce -- 用回調函數迭代地將數組簡化為單一的值
        function rsum($v, $w){$v += $w;    return $v;}    
        function rmul($v, $w){$v *= $w;return $v;}    
        $a = array(1, 2, 3, 4, 5);
        $x = array();
        $b = array_reduce($a, "rsum"); //15=1+2=3+4+5
        $c = array_reduce($a, "rmul", 10);//1200(= 10*1*2*3*4*5)
        $d = array_reduce($x, "rsum", 1);//1

十、其他
    1、array_chunk -- 將一個數組分割成多個
        $input_array = array('a', 'b', 'c', 'd', 'e');
        print_r(array_chunk($input_array, 2)); //默認值是 FALSE,每個結果數組將用從零開始的新數字索引
        print_r(array_chunk($input_array, 2, true));//TRUE表示數組中原來的鍵名
    
    2、shuffle -- 打亂(隨機排列單元的順序)一個數組。 刪除原有的鍵名,賦予新的鍵名
    
    3、in_array -- 檢查數組中是否存在某個值,區分大小寫
    
    4、數組和json互換
        json_encode()就是將PHP數組轉換成Json。
        json_decode()就是將Json轉換成PHP數組   


PHP中定義一個數組如下: $arr=array(); 這個數組的內容是什樣的?

這個數組是空的,你可以用print_r();看看結果:
print_r($arr);
 

php中$array[]是什?$array是一個數組

啥意思 不太明白 自己都說了 $array 是個數組 怎麼還問?
賦值的話
$array[] = "1";
$array[] = "2";
這樣就可以,
刪除的話這樣 unset($array[1]);
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved