Hướng dẫn dùng what extract trong PHP

Định nghĩa hàm extract() trong PHP

Hàm extract() trong PHP được sử dụng để nhập các biến từ một mảng vào trong bảng biểu tượng hiện tại (current symbol table). Nó nhận một mảng liên hợp array và coi các key như là các tên biến và các value là các giá trị biến. Với mỗi cặp key/value nó sẽ tạo một biến trong bảng biểu tượng hiện tại, theo các tham số extract_type và prefix.

Cú pháp của hàm extract() trong PHP:

extract($array, $extract_type, $prefix)

Tham số

Tham sốMiêu tả
array Bắt buộc. Xác định một mảng
extract_type

Tùy ý. Hàm extract() kiểm tra các tên biến không hợp lệ và xung đột với các tên biến hiện có. Tham số này xác định cách đối xử với các biến không hợp lệ và các biến xung đột. Các giá trị có thể có:

  • EXTR_OVERWRITE − Mặc định. Nếu xung đột, biến hiện tại sẽ bị ghi đè

  • EXTR_SKIP − Nếu xung đột, biến hiện tại sẽ không bị ghi đè

  • EXTR_PREFIX_SAME − Nếu xung đột, biến hiện tại sẽ được cung cấp một prefix

  • EXTR_PREFIX_ALL − Tất cả tên biến sẽ được cung cấp một prefix

  • EXTR_PREFIX_INVALID − Chỉ các tên biến không hợp lệ hoặc tên biến giá trị số sẽ được cung cấp một prefix

  • EXTR_IF_EXISTS − Chỉ ghi đè các biên đang tồn tại trong current symbol table, nếu không thì không làm gì cả

  • EXTR_PREFIX_IF_EXISTS − Chỉ thêm prefix tới các biến nếu biến giống nhau tồn tại trong current symbol table

  • EXTR_REFS − Trích các biến như là tham chiếu. Các biến đã được import sẽ đang tham chiếu tới value của tham số mảng

prefix

Tùy ý. Nếu EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID hoặc EXTR_PREFIX_IF_EXISTS được sử dụng trong tham số extract_rules, thì cần thiết một prefix.

Tham số này xác định một prefix. Prefix tự động phân biệt riêng rẽ các key mảng bởi một ký tự dấu gạch dưới

Trả về giá trị

Trả về số các biến được import thành công vào trong symbol table.

Ví dụ minh họa cách sử dụng hàm extract() trong PHP:

<?php
   $size = "large";
   $var_array = array("color" => "blue", "size"  => "medium", "shape" => "sphere");
   extract($var_array, EXTR_PREFIX_SAME, "wddx");

   echo "$color, $size, $shape, $wddx_size";
?> 

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:

Hướng dẫn dùng what extract trong PHP

Xem thêm Hàm trong php

Định nghĩa hàm extract() trong PHP

Hàm extract() trong PHP được sử dụng để nhập các biến từ một mảng vào trong bảng biểu tượng hiện tại (current symbol table). Nó nhận một mảng liên hợp array và coi các key như là các tên biến và các value là các giá trị biến. Với mỗi cặp key/value nó sẽ tạo một biến trong bảng biểu tượng hiện tại, theo các tham số extract_type và prefix.

Nội dung chính

  • Định nghĩa hàm extract() trong PHP
  • Cú pháp của hàm extract() trong PHP:
  • Ví dụ minh họa cách sử dụng hàm extract() trong PHP:
  • Tham số truyền vào 
  • Giá trị trả về
  • Ví dụ minh họa
  • Kết quả trả về sẽ là
  • Ví dụ minh họa
  • Ứng dụng
  • Các hàm liên quan

Cú pháp của hàm extract() trong PHP:

extract($array, $extract_type, $prefix)

Tham số

Tham sốMiêu tả
array Bắt buộc. Xác định một mảng
extract_type

Tùy ý. Hàm extract() kiểm tra các tên biến không hợp lệ và xung đột với các tên biến hiện có. Tham số này xác định cách đối xử với các biến không hợp lệ và các biến xung đột. Các giá trị có thể có:

  • EXTR_OVERWRITE − Mặc định. Nếu xung đột, biến hiện tại sẽ bị ghi đè

  • EXTR_SKIP − Nếu xung đột, biến hiện tại sẽ không bị ghi đè

  • EXTR_PREFIX_SAME − Nếu xung đột, biến hiện tại sẽ được cung cấp một prefix

  • EXTR_PREFIX_ALL − Tất cả tên biến sẽ được cung cấp một prefix

  • EXTR_PREFIX_INVALID − Chỉ các tên biến không hợp lệ hoặc tên biến giá trị số sẽ được cung cấp một prefix

  • EXTR_IF_EXISTS − Chỉ ghi đè các biên đang tồn tại trong current symbol table, nếu không thì không làm gì cả

  • EXTR_PREFIX_IF_EXISTS − Chỉ thêm prefix tới các biến nếu biến giống nhau tồn tại trong current symbol table

  • EXTR_REFS − Trích các biến như là tham chiếu. Các biến đã được import sẽ đang tham chiếu tới value của tham số mảng

prefix

Tùy ý. Nếu EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID hoặc EXTR_PREFIX_IF_EXISTS được sử dụng trong tham số extract_rules, thì cần thiết một prefix.

Tham số này xác định một prefix. Prefix tự động phân biệt riêng rẽ các key mảng bởi một ký tự dấu gạch dưới

Trả về giá trị

Trả về số các biến được import thành công vào trong symbol table.

Ví dụ minh họa cách sử dụng hàm extract() trong PHP:

<?php
   $size = "large";
   $var_array = array("color" => "blue", "size"  => "medium", "shape" => "sphere");
   extract($var_array, EXTR_PREFIX_SAME, "wddx");

   echo "$color, $size, $shape, $wddx_size";
?> 

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:

Xem thêm Hàm trong php

Hàm extract() trong PHP được sử dụng để nhập các biến từ một mảng vào trong bảng biểu tượng hiện tại (current symbol table). Nó nhận một mảng array và coi các key như là các tên biến và các value là các giá trị biến. Với mỗi cặp key/value nó sẽ tạo một biến trong bảng ký tự hiện tại, theo các tham số extract_type và prefix.

Hàm này được sử dụng trên PHP4, PHP5 và PHP7.

  • Cú pháp
  • Tham số truyền vào 
  • Giá trị trả về
  • Ví dụ minh họa
  • Kết quả trả về sẽ là
  • Ví dụ minh họa
  • Ứng dụng
  • Các hàm liên quan

Cú pháp

Cú pháp hàm extract() trong PHP như sau:

extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] ) : int

Tham số truyền vào 

  • $array là mảng được truyền vào.
  • $flags là các tùy chọn tương ứng
    • EXTR_OVERWRITE ghi đè các giá trị
    • EXTR_SKIP không ghi đè các giá trị
    • EXTR_PREFIX_SAME nếu tồn tại, thì sẽ tạo biến dựa trên tiền tố $prefix
    • EXTR_PREFIX_ALL thêm tiền tố $prefix vào toàn bộ
    • EXTR_PREFIX_INVALID chỉ tiền tố không hợp lệ/ tên biến số với $prefix
    • EXTR_IF_EXISTS chỉ ghi đè nếu biến đó đã tồn tại
    • EXTR_PREFIX_IF_EXISTS chỉ tạo biến có tiền tố $prefix nếu có nhiều biến cùng tên trong mảng
  • $prefix tiền tố khi xuất hiện sự trùng lặp biến.

Giá trị trả về

Hàm extract() sẽ trả về số lượng biến theo KEY trong mảng va $prefix đươc nhập thành công.

Ví dụ minh họa

<?php

$size = "large";
$var_array = array("color" => "blue",
                   "size"  => "medium",
                   "shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");

echo "$color, $size, $shape, $wddx_size\n";

?>

Kết quả trả về sẽ là

blue, large, sphere, medium

Tùy vào $flag mà bạn chọn thì hàm extract sẽ có các tùy chọn khác nhau, nếu trong trường hợp bạn không truyền tham số $flag thì mặc định hàm sẽ được xử lý theo $flag EXTR_OVERWRITE, trong ví dụ trên bạn có thể thấy, hàm extract được truyền vào tham số là $EXTR_PREFIX_SAME – khi có biến đã tồn tại thì tạo thêm một biến với tiền tố $frefix đã truyền vào

Khuyến cáo: Không nên sử dụng hàm extract() trong các trường hợp xử lý dữ liệu trực tiếp với các biến hệ thống như $_GET, hoặc $_SET, cảnh báo này cũng áp dụng với $_FILES.

Ví dụ minh họa

<?php
var_dump($testfile);
extract($_FILES, EXTR_SKIP);
var_dump($testfile);
var_dump($testfile['tmp_name']);
?>

Như mình đã khuyến cáo ở trên, trong trường hợp này bạn có thể mong muốn một kết quả như sau:

string(14) "/tmp/phpgCCPX8"
array(5) {
  ["name"]=>
  string(10) "somefile.txt"
  ["type"]=>
  string(24) "application/octet-stream"
  ["tmp_name"]=>
  string(14) "/tmp/phpgCCPX8"
  ["error"]=>
  int(0)
  ["size"]=>
  int(4208)
}
string(14) "/tmp/phpgCCPX8"

Tuy nhiên kết quả thực tế sẽ là

string(14) "/tmp/phpgCCPX8"
string(14) "/tmp/phpgCCPX8"
string(1) "/"

Như vậy việc thao tác với các biến hệ thống hoặc dữ liệu có độ rủi do cao, bạn không nên sử dụng extract().

Ứng dụng

<?php
class Foo {

  public function __construct ($array) {

      extract($array, EXTR_REFS);
      foreach ($array as $key => $value) {
          $this->$key = $$key;
      }

  }

}

$array = array(
    'valueOne'      => 'Test Value 1',
    'valueTwo'      => 'Test Value 2',
    'valueThree'    => 'Test Value 3'
);

$foo = new Foo($array);

// Works
echo $foo->valueOne; // Test Value 1
echo $foo->valueTwo; // Test Value 2
?>

Trong ví dụ trên các bạn có thể thấy ứng dụng của hàm extract() trong việc khởi tạo một đối tượng có nhiều tham số dễ dàng như thế nào.

Các hàm liên quan

  • Hàm compact() tạo ra mảng kết hợp từ biếngiá trị của một mảng
  • Hàm list() gán các biến như thể chúng là một mảng

Hi vọng với bài viết này, bạn đã hiểu rõ cách sử dụng hàm extract() trong PHP. Nếu thấy bài viết hay và ý nghĩa, hãy like và chia sẻ với bạn bè để mọi người cùng nhau học tập nhé.

Cảm ơn bạn đã ghé thăm codetutam.com