Return Nhiều Giá Trị Trong Php

Có một trong những yêu mong cơ phiên bản đối với các ngôn ngữ lập trình sẵn như là: buộc phải một vị trí để lưu trữ data, thống trị flow program, reviews biểu thức, quản lý file, với text đầu ra ... Vv. Với PHP có đáp ứng được tất cả những đồ vật này, thêm vào đó nó có support các câu lệnh như else tốt elseif góp ta tinh chỉnh program một bí quyết dễ dàng. Tuy nhiên, ngay cả khi ta dùng hầu như thứ này thì vấn đề lập trình vẫn vẫn trở phải khá tốn sức và bi lụy chán, đặc trưng khi các bạn phải viết lại những đoạn code giống như nhau mỗi lúc cần sử dụng chúng. Đó là lý do, tín đồ ta tạo thành các tư tưởng về functions và objects. Và hoàn toàn có thể bạn sẽ biết, thì function là một trong những tập hợp những câu lệnh tiến hành một công dụng cụ thể, với return về một value tùy ý. Chúng ta cũng có thể đặt một quãng code - cần thực hiện nhiều lần vào trong một function và điện thoại tư vấn function kia theo tên khi đề xuất dùng tới nó. Functions có tương đối nhiều ưu điểm so với inline code. Lấy ví dụ như:

Gõ ít code hơnGiảm lỗi liên quan tới cú syntax và những lỗi thiết kế khácGiảm thời hạn load của program filesGiảm thời gian thực thi, vì chưng mỗi function chỉ biên dịch một lần, bất kể bạn hotline hàm kia nhiều như vậy nàoCó thể truyền vào function các arguments, do đó ta rất có thể tái sử dụng trong vô số trường hợp khác nhau

Ngoài ra, một object kết hợp với một hay những funtion, và tài liệu chúng thực hiện trong một kết cấu duy độc nhất vô nhị gọi là một trong class. Trong loạt nội dung bài viết này, ta sẽ tò mò về cách áp dụng function, từ việc define nó, đến việc gọi nó ra để truyền các đối số. Với những kiến thức này, ta gồm thể bước đầu tạo các function và áp dụng nó cho các object của bọn chúng ta. (ta gọi đấy là các methods.)

Tips: hiện nay, có nhiều version PHP không giống nhau. Tuy nhiên tôi khuyên chúng ta nên áp dụng PHP version 5.6 trở lên, để bạn cũng có thể dễ dàng folow theo những bài viết này.

Bạn đang xem: Return nhiều giá trị trong php

PHP Functions

PHP bao gồm hàng trăm những functions được tích hòa hợp sẵn, có tác dụng nó biến một ngữ điệu rất app và phong phú. Để thực hiện function, hãy hotline nó ra trải qua tên. Ví dụ, bạn cũng có thể xem function date dưới đây: echo date("l"); // Hiển thị ngày vào tuần vệt ngoặc đơn ở trên đã nói đến PHP biết rằng, ai đang tham chiếu tới một function. Còn nếu không có, PHP sẽ nghĩ rằng ai đang tham chiếu cho tới một contant.Một function có thể không thừa nhận vào bất kỳ argument nào. Ví dụ, function phpinfo sau đây hiển thị rất nhiều thông tin về cài đặt của PHP hiện nay tại, nhưng không yêu cầu argument. Phpinfo();

*

Tips: function phpinfo rất là hữu ích nhằm ta biết được thông tin về các cài đặt PHP hiện tại tại, mà lại nó cũng có thể rất hữu ích so với các hacker. Vị đó, đừng lúc nào để lại đoạn function này trong những đoạn code của bạn.

Ta rất có thể tiếp tục xem một trong những function tích đúng theo sẵn, yêu ước một hay các argument nguồn vào như dưới đây:

echo strrev(" .dlrow olleH"); // Reverse string echo str_repeat("Hip ", 2); // Repeat string echo strtoupper("hooray!"); // String lớn upper case?>Ví dụ bên trên đã thực hiện 3 string function để ouput ra đoạn text dưới đây: Hello world. Hip Hip HOORAY! Ta thấy rằng, funtion strrev sẽ đảo ngược thứ tự các ký tự vào string, function str_repeat sẽ tái diễn string "Hip " gấp đôi (theo yêu cầu của argument trang bị 2). Và function strtoupper sẽ thay đổi "hooray!" thành chữ viết hoa.

Defining a Function

Cú pháp thông thường cho bài toán define một function như sau:

function function_name(>)  // Statements Ý nghĩa của dòng đầu tiên như sau:

Define một function sẽ bắt đầu bằng tự khóa functionTên hàm theo sau phải bắt đầu bằng một chữ cái hoặc có thể dấu gạch dưới, cùng theo tiếp đến là chữ cái, số, hoặc che dấu gạch dưới.Bắt buộc phải gồm dấu ngoặc 1-1 đi kèmCác tham số của hàm được phân bóc tách bằng vết phẩy

Ngoài ra, tên function sẽ không phân biệt chữ hoa - thường, vị vậy tất cả các string sau đa số tham chiếu cho tới print function: PRINT, Print, cùng PrInT. Các câu lệnh của function sẽ tiến hành viết vào cặp dấu ngoặc nhọn mở - đóng, những cấu lệnh này còn có thể bao gồm một hay nhiều lệnh return, lệnh return vẫn ép buộc dừng thực hiện và tiến hành trả về cực hiếm yêu cầu.

Returning a Value

Ta cùng nhau xem một function đơn giản dễ dàng dưới trên đây giúp convert fullname của peron thành lowercase và triển khai viết hoa chữ cái đầu tiên. Ở phần trên, ta đã làm quen cùng với function strtoupper được tích hòa hợp sẵn của PHP. Sau đây ta sẽ sử dụng một function giống như đó là strtolower:

$lowered = strtolower("aNY # of Letters and Punctuation you WANT");echo $lowered;Ta tất cả output như sau: any # of letters và punctuation you want tuy nhiên, tôi ko muốn tất cả các ký kết tự đa số là chữ thường, tôi mong muốn viết hoa chữ cái đầu tiên. Suôn sẻ là vào PHP cũng có cung ứng một function tên là ucfirst giúp biến đổi ký tự thứ nhất string thành chữ in hoa:

$ucfixed = ucfirst("any # of letters và punctuation you want");echo $ucfixed;Ta tất cả output như sau: Any # of letters and punctuation you want tiếng ta có thể thực hiện xây dựng một program dễ dàng đầu tiên: đó là, để sở hữu được một từ bỏ viết hoa chữ cái đầu tiên, ta sẽ hotline strtolower trước, kế tiếp tiếp tục điện thoại tư vấn ucfirst. Cách để thực hiện vấn đề đó đó là ta lồng function strtolower trong ucfirst. Điều quan trọng là ta phải để ý đến sản phẩm tự thực hiện của biểu thức. Trước hết, ta thử thực hiện gọi cho tới function như sau: print(5-8); Ở trên, biểu thức 5 - 8 sẽ được thực thi trước, với ta tất cả ouput là -3. (Ở đây, PHP vẫn convert công dụng thành một string với hiển thị nó ra màn hình). Và nếu biểu thức này gồm một function khác mặt trong, thì function này sẽ được thực thi trước: print(abs(5-8)); trong biểu thức trên, PHP đã thực hiện một số trong những việc theo trình tự như sau:

Thực hiện nay phép tính 5 - 8 để trả về quý giá là -3Dùng function abs để chuyển đổi - 3 thành 3Convert công dụng thành string và ouput ra bằng function print

Tóm lại, PHP đã tiến hành biểu thức từ trong ra ngoài. Và biểu thức tiếp sau đây cũng chuyển động theo trình từ bỏ tương tự: ucfirst(strtolower("aNY # of Letters và Punctuation you WANT")) Ở đây, PHP sẽ điện thoại tư vấn tới strtolower trước, tiếp nối gọi cho tới ucfirst function, ta được output như sau: Any # of letters and punctuation you want Ở ví dụ tiếp theo dưới đây, ta vẫn define một function bao gồm 3 đối số names, từng name là chữ thường có ký tự thứ nhất viết hoa.

echo fix_names("WILLIAM", "henry", "gatES"); function fix_names($n1, $n2, $n3) $n1 = ucfirst(strtolower($n1)); $n2 = ucfirst(strtolower($n2)); $n3 = ucfirst(strtolower($n3)); return $n1 . " " . $n2 . " " . $n3; ?>Ta thu được đầu ra như sau: William Henry Gates

Returning an Array

Trước version PHP 5.3, ta có thể mở đầu một biến bởi ký tự và tại thời điểm gọi funcion (ví dụ, increment(&$myvar);) nhằm yêu mong trình so sánh truyền một tham chiếu cho tới biến, chứ chưa phải giá trị của biến. Điều này đã chất nhận được một function truy vấn vào vươn lên là (cho phép các giá trị khác biệt được ghi ngược lại vào nó)

Tips: hình trạng truyền tham chiếu theo thời hạn gọi này dường như không được cần sử dụng trong PHP 5.3 với được xóa bỏ hoàn toàn ở PHP 5.4. Bởi đó, bạn tránh việc dùng thiên tài này xung quanh những website cũ. Lời răn dạy là, bạn nên viết lại code nhưng đã dùng theo phong cách truyền tham chiếu này, bởi vì nó sẽ chạm chán phải lỗi cực kỳ nghiêm trọng ở những phiên bạn dạng PHP mới hơn.

Tuy nhiên, trong khu vực định nghĩa function, các bạn vẫn hoàn toàn có thể tiếp tục truy vấn các đối số trải qua tham chiếu. định nghĩa này rất có thể hơi cực nhọc hiểu chút, cho nên vì vậy ta đang cùng quay lại với ví dụ về hộp diêm nghỉ ngơi các nội dung bài viết trước. Hãy tưởng tượng rằng, thay vì chưng lấy một miếng giấy thoát khỏi hộp diêm, hiểu nó, copy phần nhiều gì trong nó sang trọng một miếng giấy khác, đặt phiên bản gốc quay lại hộp, với truyền bản copy đó tới một function. Thì ta có một cách dễ dàng và đơn giản hơn đó là đính kèm một tua chỉ vào miếng giấy ban đầu, và truyền đầu còn lại tới functoin.

*
Sau kia thì function rất có thể theo dõi luồng này nhằm tìm tài liệu được tróc nã cập. Điều này sẽ tránh được quá tải việc tạo ra các phiên bản copy của đổi thay chỉ cho function sử dụng. Hơn nữa, function này giờ hoàn toàn có thể chỉnh sửa trực tiếp giá trị của biến. Dưới đây ta đã viết lại ví dụ về function fix_names bên trên để truyền những tham chiếu cho tất cả các tham số, và tiếp đến function có thể chỉnh sửa trực tiếp những tham số này.

$a1 = "WILLIAM"; $a2 = "henry"; $a3 = "gatES"; echo $a1 . " " . $a2 . " " . $a3 . ""; fix_names($a1, $a2, $a3); echo $a1 . " " . $a2 . " " . $a3; function fix_names(&$n1, &$n2, &$n3) $n1 = ucfirst(strtolower($n1)); $n2 = ucfirst(strtolower($n2)); $n3 = ucfirst(strtolower($n3)); ?>Thay bởi truyền trực tiếp những string vào function, đầu tiên ta vẫn gán nó tới các biến, cùng in nó ra để xem giá trị thứ nhất của nó trước đã. Sau đó, ta hotline tới function như bình thường, bao gồm điều đặc biệt là ở khu vực định nghĩa function ta đã đặt thêm ký kết tự và ở trước mỗi tham số nhưng mà sẽ tiến hành truyền tham chiếu. Giờ đây, thì các biến$n1, $n2, và $n3 sẽ tiến hành gắn vào "threads" nối tới các giá trị của $a1, $a2, với $a3. Nói phương pháp khác, đó là một nhóm những giá trị, nhưng gồm 2 tập tên phát triển thành được phép truy cập vào chúng.Dó đó, function fix_names chỉ việc gán những giá trị bắt đầu cho $n1, $n2, và $n3 nhằm update giá trị mang lại $a1, $a2, với $a3. Ta gồm output của đoạn code này như sau:

WILLIAM henry gatESWilliam Henry GatesNhư các bạn thấy cả 2 câu lệnh echo chỉ áp dụng giá trị của $a1, $a2, và $a3.

Returning Global Variables

Có một cách giỏi hơn để cho phép funcion truy vấn một phát triển thành được tạo ra phía phía bên ngoài đó là khai báo nó có có quyền truy vấn global từ bên trong của function. Theo sau keyword global là tên gọi biến, được cho phép mọi phần nằm trong code của bạn có full quyền truy nã cập.

Xem thêm: Fix: Windows Media Player Encountered A Problem While Playing The File

$a1 = "WILLIAM"; $a2 = "henry"; $a3 = "gatES"; echo $a1 . " " . $a2 . " " . $a3 . ""; fix_names(); echo $a1 . " " . $a2 . " " . $a3; function fix_names() global $a1; $a1 = ucfirst(strtolower($a1)); global $a2; $a2 = ucfirst(strtolower($a2)); global $a3; $a3 = ucfirst(strtolower($a3)); ?>Giờ trên đây bạn chưa phải truyền những tham số mang đến function nữa. Sau khi được khai báo, những biến này sẽ giữ lại quyền truy vấn global, cùng được sẵn sàng truy vấn trong đa số phần còn sót lại của program, bao hàm cả functions của nó.

Recap of Variable Scope

Để nhớ lại kiến thức, tôi đã tóm tắt lại con kiến thức đặc biệt quan trọng về Variable Scope:

Local variables chỉ rất có thể truy cập được trong phạm vi vị trí code mà chúng ta đã define nó. Trường hợp nó nằm bên ngoài function, thì nó có thể được truy vấn bởi tất cả các code bên ngoài function, class, ...vv. Giả dụ một biến hóa nằm bên phía trong một function, thì chỉ gồm function đó có thể truy cập đổi thay này, và quý hiếm của biến chuyển này đã mất lúc function được return.Global variables đổi mới này rất có thể được truy cập từ bất kỳ đâu trong code của bạnStatic variables ngược lại với một biến đổi được khai báo như 1 function parameter - một số loại mà giá bán trị sẽ bị phá huỷ lúc exit function, thì static variable sẽ không bị mất giá trị lúc exit function, và nó đã vẫn giữ giá tốt trị khi function được gọi lại. Ta rất có thể tham khảo quý giá dưới đây:

function keep_track() STATIC $count = 0; $count++; print $count; print ""; keep_track(); keep_track(); keep_track();?>Ta thu được hiệu quả như sau:

123

Including và Requiring Files

Khi đã thân quen hơn với câu hỏi lập trình PHP, tất cả thể bạn sẽ muốn build một library các functions mà bạn nghĩ sẽ cần dùng lại nó vào tương lại. Hoặc có thể bạn muốn sử dụng những library sẵn gồm do các lập trình viên khác sẽ viết. Bọn họ sẽ không phải copy và paste những functions vào code. Vì chưng ta có thể lưu chúng vào các file riêng lẻ và sử dụng command để call chúng về. Bao gồm 2 command để thực hiện hành vi này đó là: include and require.

The include Statement

Khi cần sử dụng include, các bạn sẽ yêu mong PHP fetch về một file cụ thể và load tất cả nội dung của nó. Nó giống như thể là bạn paste một included tệp tin vào file hiện tại. Dưới đây là cách ta include một tệp tin tên là library.php.

include "library.php"; // Your code goes here?>

Using include_once

Mỗi khi chúng ta đưa ra yêu ước include, nó đã include lại tệp tin được đã có được yêu cầu include, ngay cả khi bạn đã insert nó rồi. Ví dụ, giả sử rằng tệp tin library.php chứa không hề ít function hữu ích, và bạn include nó vào file, nhưng các bạn cũng include một library không giống - vẫn include library.php. Bởi đó, các bạn đã vô tình include tệp tin library.php 2 lần. Điều này sẽ gây nên message lỗi, vì các bạn đang cố gắng define và một constant xuất xắc function những lần. Vì vậy, các bạn nên áp dụng include_once để thay thế cho include.

include_once "library.php"; // Your code goes here?>Sau kia thì dù chúng ta có cố gắng include file trùng nhau đi nữa (bằng include hoặc include_once) thì nó cũng trở nên được quăng quật qua. Để khẳng định liệu requested file đã đạt được executed giỏi không, thì absolute tệp tin path sẽ được matched sau khoản thời gian relative paths được xử lý và tệp tin được tìm kiếm thấy trong include path.

Tips: Nói thông thường là, các bạn nên thực hiện câu lệnh include_once và bỏ qua mất lệnh include. Bằng phương pháp này, thì các bạn sẽ không lúc nào gặp vụ việc về file bị include các lần.

Using require và require_once

Một vụ việc tiềm ẩn so với include với include_onceđó là PHP chỉ "cố gắng" include file được yêu thương cầu. Program đã vẫn thường xuyên chạy mặc dù file ko được kiếm tìm thấy. Thấy lúc thực sự quan trọng bắt cần include một file nào đó, ta hãy sử dụng require. Các lý do tương tự như như với include_once, tôi khuyên bạn nên dùng require_oncekhi bạn phải require file.