ARRAY KỸ THUẬT XỬ LÝ MẢNG TRONG PHP

17 304 0
ARRAY   KỸ THUẬT XỬ LÝ MẢNG TRONG PHP

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Cũng như bao ngôn ngữ lập trình khác. PHP cũng tồn tại một loại dữ liệu được gọi là mảng. Cụ thể hơn Mảng là 1 biến danh sách. Nghĩa là, một biến vốn chứa nhiều phần tử được tạo bởi các số hoặc chuỗi. Nó cho phép chúng ta lưu trữ, sắp xếp thứ tự và truy cập nhiều giá trị với một tên. Và cần lưu ý rằng một phần tử mảng luôn bắt đầu với giá trị là 0.

www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 1 Email: vukhanh2212@gmail.com Zend Framework! Programming Shopping application K thut x lý mng Mng (Array) là mt thành phn rt quan trng bt k ngôn ng lp trình nào. Thông thng khi lp trình web vi PHP thun chúng ta rt ít khi đ ý đn k thut x lý mng điu đó đã làm hn ch s linh hot ca ng dng. i vi các ng dng đc xây dng trên nn Zend Framework, nu chúng ta không x dng tt mng thì tht s s khó khn đ chúng ta có th ti u mã ca chng trình và giúp cho ng dng ca chúng ta chy nhanh đc. Chính vì vy trong bài này chúng ta s hc cách x lý mng cho mi tình hung đ nâng cao kh nng ng dng mng vào Zend Framework. Giáo trình: Zend Framework! Programming (v2.2) Chuyên đ: Shopping application Biên son: Phm V Khánh Email: vukhanh2212@gmail.com in thoi: 0908.893326 Website: www.zend.vn Cp nht: 07-2010 www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 2 Email: vukhanh2212@gmail.com Mng là gì? Bin là mt ni đ lu tr s hoc ch. Vn đ là, bin ch có th lu tr mt giá tr duy nht. Còn mng là mt bin đc bit, nó có th lu tr nhiu giá tr trong mt bin duy nht. Ví d: Chúng ta ch có th lu tr mt tên ca nhân viên trong mt bin. Nhng đi vi mng chúng ta có th lu tr hàng ngàn tên nhân viên khác nhau. <?php $employee_1 = 'Nguyn Vn A'; $employee = array(); $employee[] = 'Nguyn Vn A'; $employee[] = 'Nguyn Vn B'; ?> Mng có th lu tr tt c các giá tr bin ca bn di mt tên duy nht. Và bn có th truy cp giá tr bng cách tham chiu đn tên mng. Mi phn t mng có ch s riêng (index) đ chúng ta có th truy cp chúng mt cách d dàng. Trong PHP có 3 loi mng: Mng s nguyên (Numeric array), Associative array, Multidimensional array. 1. Mng s nguyên Mng s nguyên là mng có ch s (index or key) là  dng s. Chúng ta thng gi mng này là mng liên tc. Có 2 cách đ to ra mt mng s nguyên. Ví d 1: $cars=array("Saab","Volvo","BMW","Toyota"); Ví d 2: $cars[0]="Saab"; $cars[1]="Volvo"; $cars[2]="BMW"; $cars[3]="Toyota"; In mt phn t trong mng: $cars[0]="Saab"; $cars[1]="Volvo"; $cars[2]="BMW"; $cars[3]="Toyota"; echo $cars[3] . "<br>"; echo $cars[0] . " and " . $cars[1] . " are Swedish cars."; In tt c các phn t trong mng $cars[0] = "Saab"; $cars[1] = "Volvo"; $cars[2] = "BMW"; $cars[3] = "Toyota"; for ($i = 0; $i <= count($cars); $i++) { www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 3 Email: vukhanh2212@gmail.com echo $cars[$i] . "<br>"; } 2. Mng kt hp Mng kt hp là mt mng mà ch s (index or key) là mt giá tr, ch s có th là chui hoc s. Khi lu tr d liu vào các phn t mng, các phn t đó đc đt tên c th. Mng kt hp là mt s bng xung cn thit cho thành phn mng trong PHP vì có nhiu vn đ mng s nguyên không th gii quyt đc ht. Chúng ta thng gi là mng không liên tc. Ví d 1: $ages = array("Tuan"=>32, "Quang"=>30, "Long"=>34); Ví d 2: $ages["Tuan"] = 32; $ages["Quang"] = 30; $ages["Long"] = 34; In mt phn t trong mng $ages["Tuan"] = 32; $ages["Quang"] = 30; $ages["Long"] = 34; echo $ages["Tuan"]; In tt c các phn t trong mng $ages["Tuan"] = 32; $ages["Quang"] = 30; $ages["Long"] = 34; foreach($ages as $key => $value){ echo "<br>" . $key . " : " . $value; } 3. Mng đa chiu Mng đa chiu là mng mà mi phn t trong mng chính có th là mt mng và mi phn t trong mng con cng có th là mt mng. Chúng ta thng gi là mng lng. Ví d: $students["SV001"] = array('id'=>1, 'name'=>'Tun', 'age'=> 18, 'points'=>array(10,5,8) ); $students["SV002"] = array('id'=>1, 'name'=>'Tun', 'age'=> 18, 'points'=>array(10,5,8) ); $students["SV003"] = array('id'=>1, 'name'=>'Tun', 'age'=> 18, 'points'=>array(10,5,8) ); www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 4 Email: vukhanh2212@gmail.com In phn t trong mng: <?php $students["SV001"] = array('id'=>1, 'name'=>'Tun', 'age'=> 18, 'points'=>array(10,5,8) ); $students["SV002"] = array('id'=>1, 'name'=>'Tun', 'age'=> 18, 'points'=>array(10,5,8) ); $students["SV003"] = array('id'=>1, 'name'=>'Tun', 'age'=> 18, 'points'=>array(10,5,8) ); echo $students["SV003"]['name'] . '<br>'; echo $students["SV003"]['age'] . '<br>'; ?> 4. Xem cu trúc mng  có th thao tác tt trên mt mng bt k chúng ta phi đc đc cu trúc mng. Trong thc t đ đc cu trúc mng, đi tng, bin toàn cc ca mt h thng … các lp trình viên PHP thng dùng khi lnh sau: echo '<pre>'; print_r($ten_mang); echo '</pre>'; Ví d: nu chúng ta in ra mng $students  mc 3 chúng ta s đc nh sau: Array ( [SV001] => Array ( [id] => 1 [name] => Tun [age] => 18 [points] => Array ( [0] => 10 [1] => 5 [2] => 8 ) ) [SV002] => Array ( [id] => 1 [name] => Tun [age] => 18 [points] => Array ( [0] => 10 [1] => 5 [2] => 8 ) ) www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 5 Email: vukhanh2212@gmail.com [SV003] => Array ( [id] => 1 [name] => Tun [age] => 18 [points] => Array ( [0] => 10 [1] => 5 [2] => 8 ) ) ) 5. Bài tp mng  x lý tt mng chúng ta cn phi thc hin nhiu bài tp vi mng đa chiu điu này giúp chúng ta nâng cao kh nng x lý mng Bài tp 1: Xây dng hàm đa d liu trong bng groups vào trong selectbox <?php $con = mysql_connect('localhost', 'root', ''); mysql_select_db('zf05', $con); $sql = 'SELECT * FROM user_group'; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)) { $newArray[$row['id']] = $row['group_name']; } echo formSelect('group', null, $newArray); function formSelect($name, $value = null, $option = null, $attri = null) { $xhtml = '<select id="' . $name . '" name="' . $name . '">'; foreach ($option as $key => $val) { $xhtml .= '<option value="' . $key . '">' . $val . '</option>'; } $xhtml .= '</select>'; return $xhtml; } ?> Bài tp 2: Nhp 2 mng thành mt mng duy nht theo cu trúc đc yêu cu <?php $group[] = array('id' => 1, 'name' => 'Admin'); $group[] = array('id' => 2, 'name' => 'Manager'); $group[] = array('id' => 3, 'name' => 'Member'); $member[] = array('id' => 1, 'username' => 'Nguyen Van A', 'group_id' => 1); $member[] = array('id' => 2, 'username' => 'Nguyen Van B', 'group_id' => 1); $member[] = array('id' => 3, 'username' => 'Nguyen Van C', 'group_id' => 1); $member[] = array('id' => 4, 'username' => 'Nguyen Van D', 'group_id' => 2); $member[] = array('id' => 5, 'username' => 'Nguyen Van E', 'group_id' => 2); $member[] = array('id' => 6, 'username' => 'Nguyen Van F', 'group_id' => 2); $member[] = array('id' => 7, 'username' => 'Nguyen Van G', 'group_id' => 3); $member[] = array('id' => 8, 'username' => 'Nguyen Van H', 'group_id' => 3); $member[] = array('id' => 8, 'username' => 'Nguyen Van I', 'group_id' => 3); $newArray = array(); www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 6 Email: vukhanh2212@gmail.com foreach ($group as $key => $val) { $newArray[$val['name']] = array(); foreach ($member as $key1 => $info) { if ($val['id'] == $info['group_id']) { $newArray[$val['name']][] = $info; } } } echo '<pre>'; print_r($newArray); echo '</pre>'; ?> 6. Các hàm x lý mng hu ích 6.1 Hàm print_r() print_r ( array &$array ): In mng $array ra, ch yu dùng đ debug $ages["Tuan"] = 32; $ages["Quang"] = 30; $ages["Long"] = 34; echo '<pre>'; print_r($ages); echo '</pre>'; 6.2 Hàm count() int count ( array &$array ): Tr v gí tr kiu s nguyên là s phn t ca mng $array $ages["Tuan"] = 32; $ages["Quang"] = 30; $ages["Long"] = 34; count($ages); 6.3 Hàm array_values(): array array_values ( array &$array ): Tr v mt mng liên tc bao gm các phn t có giá tr là giá tr ly t các phn t ca mng $array Ví d: <?php $array = array("size" => "XL", "color" => "gold"); print_r(array_values($array)); ?> Hin th: Array ( [0] => XL [1] => gold ) www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 7 Email: vukhanh2212@gmail.com 6.4 Hàm array_keys(): array array_keys ( array &$array ): Tr v mt mng liên tc bao gm các phn t có giá tr là khóa (key) ly t các phn t ca mng $array Ví d: $array = array(0 => 100, "color" => "red"); print_r(array_keys($array)); $array = array("blue", "red", "green", "blue", "blue"); print_r(array_keys($array, "blue")); $array = array("color" => array("blue", "red", "green"), "size" => array("small", "medium", "large")); print_r(array_keys($array)); Hin th: Array ( [0] => 0 [1] => color ) Array ( [0] => 0 [1] => 3 [2] => 4 ) Array ( [0] => color [1] => size ) 6.5 Hàm array_pop(): mixed array_pop ( array &$array ): Loi b phn t cui cùng ca mng $array. Hàm tr v phn t cui cùng đã đc loi b. Ví d: <?php $stack = array("orange", "banana", "apple", "raspberry"); $fruit = array_pop($stack); print_r($stack); ?> Hin th: Array ( [0] => orange [1] => banana [2] => apple ) 6.6 Hàm array_push(): www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 8 Email: vukhanh2212@gmail.com int array_push ( array &$array , mixed $var [, mixed $ ] ): a thêm 1 hoc nhiu phn t vào cui mng $array. Hàm tr v kiu s nguyên là s lng phn t ca mng $array mi Ví d: <?php $stack = array("orange", "banana"); array_push($stack, "apple", "raspberry"); print_r($stack); ?> Hin th: Array ( [0] => orange [1] => banana [2] => apple [3] => raspberry ) 6.7 Hàm array_shif(): mixed array_shift ( array &$array ): Loi b phn t đu tiên ca mng $array. Hàm tr v phn t đu tiên đã đc loi b. Ví d: <?php $stack = array("orange", "banana", "apple", "raspberry"); $fruit = array_shift($stack); print_r($stack); ?> Hin th: Array ( [0] => banana [1] => apple [2] => raspberry ) 6.8 Hàm array_unshif(): int array_unshift ( array &$array , mixed $var [, mixed $ ] ): a thêm 1 hoc nhiu phn t vào v trí đu mng. Hàm tr v kiu s nguyên là s lng phn t ca mng $array mi Ví d: <?php $queue = array("orange", "banana"); array_unshift($queue, "apple", "raspberry"); print_r($queue); ?> Hin th: Array www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 9 Email: vukhanh2212@gmail.com ( [0] => apple [1] => raspberry [2] => orange [3] => banana ) 6.9 Hàm list(): array list ( mixed $varname [, mixed $ ] ) = $arrValue: ây là mt cu trúc ngôn ng đc dùng đ gán giá tr cho mt danh sách các bin. Giá tr đc ly tun t t tp hp các phn t tun t ca mng đc gán $arrValue (tc là không ly các phn t có khóa (key)) Ví d: <?php $info = array('coffee', 'brown', 'caffeine'); // Listing all the variables list($drink, $color, $power) = $info; echo '<br>' . "$drink is $color and $power makes it special.\n"; // Listing some of them list($drink, , $power) = $info; echo '<br>' . "$drink has $power.\n"; // Or let's skip to only the third one list( , , $power) = $info; echo '<br>' . "I need $power!\n"; // list() doesn't work with strings list($bar) = "abcde"; var_dump($bar); // NULL ?> Hin th coffee is brown and caffeine makes it special. coffee has caffeine. I need caffeine! NULL Ví d: $info = array('coffee', 'brown', 'caffeine'); list($a[0], $a[1], $a[2]) = $info; echo '<pre>'; print_r($a); echo '</pre>'; Hin th Array ( [2] => caffeine [1] => brown [0] => coffee ) 6.10 Hàm array_flip(): www.zend.vn Giáo trình: Zend Framework! (v 2.2) o to lp trình viên chuyên nghip Phn 1: K thut x lý mng http://www.zend.vn Ging viên: Phm V Khánh 10 Email: vukhanh2212@gmail.com array array_flip ( array $array ): Tr v mt mng có khóa và giá tr đc hoán đi cho nhau so vi mng $array (giá tr thành khóa và khóa thành giá tr) Ví d: $trans = array("a" => 1, "b" => 1, "c" => 2); $trans = array_flip($trans); echo '<pre>'; print_r($trans); echo '</pre>'; Hin th: Array ( [1] => b [2] => c ) 6.11 Hàm sort() bool sort ( array &$array ): Sp xép mng $array theo giá tr tng dn Ví d: $fruits = array("lemon", "orange", "banana", "apple"); sort($fruits); echo '<pre>'; print_r($fruits); echo '</pre>'; Hin th Array ( [0] => apple [1] => banana [2] => lemon [3] => orange ) 6.12 Hàm array_reverse() array array_reverse ( array $array ): o ngc v trí các phn t ca mng, phn t cui cùng tr thành phn t đu tiên, phn t k cui thành phn t th nhì, Ví d: $fruits = array("lemon", "orange", "banana", "apple"); $result = array_reverse($fruits); echo '<pre>'; print_r($result); echo '</pre>'; Hin th Array ( [0] => apple [1] => banana [2] => orange [...]... ): Tr khác nhau v à $array2 Ví d $array1 = array( "a" => "green", "red", "blue", "red"); $array2 = array( "b" => "green", "yellow", "red"); $result = array_ diff( $array1 , $array2 ); echo ''; print_r($result); echo ''; Hi Array ( [1] => blue ) 6.25 Hàm array_ diff_assoc vn d en array array_diff_assoc ( array $array1 , array $array2 ): Tr ph à giá tr à $array2 Ví d $array1 = array( "a" => "green",... ph m à $array2 Ví d $array1 = array( "a" => "green", "red", "blue"); $array2 = array( "b" => "green", "yellow", "red"); $result = array_ intersect( $array1 , $array2 ); z w w w echo ''; print_r($result); echo ''; Hi Array ( [a] => green [0] => red ) 6.27 Hàm array_ intersect_assoc() array array_intersect_assoc ( array $array1 , array $array2 ): Tr các ph à giá tr à $array2 Ví d $array1 = array( "a"... "blue", "red"); $array2 = array( "a" => "green", "yellow", "red"); $result _array = array_ intersect_assoc( $array1 , $array2 ); echo ''; print_r($result _array) ; echo ''; Array ( [a] => green ) 6.28 Hàm array_ combine() vn d en Hi array array_combine ( array $keys , array $values ): T t à giá tr Ví d $a = array( 'green', 'red', 'yellow'); $b = array( 'avocado', 'apple', 'banana'); $c = array_ combine($a,... Hàm array_ merge() array array_merge ( array $array1 [, array $array2 [, array $ ]] ): Nh m ành 1 m t và tr z w w w Ví d $fruits_1 = array( "lemon", "orange"); $fruits_2 = array( "banana", "apple"); $result = array_ merge($fruits_1,$fruits_2); echo ''; print_r($result); echo ''; Hi Array ( [0] [1] [2] [3] ) => => => => lemon orange banana apple 6.14 Hàm array_ rand() mixed array_ rand ( array. .. $tmp[3]; } } (cau-3 .php) < ?php require_once 'cau-1 .php' ; require_once 'cau-2 .php' ; $newArray = array( ); foreach($arrQuestion as $key => $info){ $newArray[$key]["question"] = $info['question']; $newArray[$key]["sentences"] = $arrOption[$key]; } Câu 4: T (quiz .php) < ?php require_once 'cau-1 .php' ; require_once 'cau-2 .php' ; $newArray = array( ); foreach($arrQuestion as $key => $info){ $newArray[$key]["question"]... "red"); $array2 = array( "a" => "green", "yellow", "red"); $result = array_ diff_assoc( $array1 , $array2 ); echo ''; print_r($result); echo ''; Hi Array ( [b] => brown [c] => blue [0] => red ) 6.26 Hàm array_ intersect(): Gi ên: Ph 14 Email: vukhanh2212@gmail.com Giáo trình: Zend Framework! (v 2.2) Ph ình viên chuyên nghi http://www.zend.vn array array_intersect ( array $array1 , array $array2 ... 6.23 Hàm in _array( ) Gi ên: Ph 13 Email: vukhanh2212@gmail.com Giáo trình: Zend Framework! (v 2.2) Ph ình viên chuyên nghi http://www.zend.vn bool in _array ( mixed $value , array $array ): Ki m Ví d $input = array( "a" => "green", "red", "b" => "green", "blue", "red"); if (in _array( 'green', $input)) { echo "Tìm th } z w w w 6.24 Hàm array_ diff() array array_diff ( array $array1 , array $array2 ): Tr... = array( "lemon", "orange", "banana", "apple"); $rand_keys = array_ rand($fruits, 2); echo ''; print_r($rand_keys); echo ''; Hi Array ( [0] => 3 [1] => 2 ) 6.15 array_ search() mixed array_ search ( mixed $needle , array $array ): Tìm giá tr tr a (key) c ìm Ví d àm $array = array( 0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); $key = array_ search('green', $array) ; // $key = 2; $key = array_ search('red',... array_ slice($input, -2, 1); $output = array_ slice($input, 0, 3); // returns "c", "d", and "e" // returns "d" // returns "a", "b", and "c" // note the differences in the array keys print_r (array_ slice($input, 2, -1)); print_r (array_ slice($input, 2, -1, true)); 6.17 array_ unique() array array_unique ( array $array ): Gom nh thành 1 ph tr ùng nhau trong m ùng nhau v Ví d $input = array( "a" => "green", "red", "b"... array_ search('red', $array) ; // $key = 1; Gi ên: Ph 11 Email: vukhanh2212@gmail.com Giáo trình: Zend Framework! (v 2.2) Ph ình viên chuyên nghi http://www.zend.vn 6.16 array_ slice() array array_slice ( array $array , int $offset [, int $length ] ): Trích l c àl êu c trong m à 0) Tr ên z w w w Ví d $input = array( "a", "b", "c", "d", "e"); $output = array_ slice($input, 2); $output = array_ slice($input, . print_r (array_ slice($input, 2, -1 )); print_r (array_ slice($input, 2, -1 , true)); 6.17 array_ unique() array array_unique ( array $array ): Gom nhng phn t trùng nhau trong mng $array thành. vukhanh2212@gmail.com array array_intersect ( array $array1 , array $array2 ): Tr v mt mng bao gm các phn t ging nhau v giá tr gia 2 mng $array1 và $array2 . Ví d: $array1 = array( "a". & Options (cau-3 .php) < ?php require_once 'cau-1 .php& apos;; require_once 'cau-2 .php& apos;; $newArray = array( ); foreach($arrQuestion as $key => $info){ $newArray[$key]["question"]

Ngày đăng: 23/08/2014, 11:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan