Làm cách nào để chuyển một mảng kết hợp trong hàm trong PHP?

Trong hướng dẫn này, chúng ta xem xét vòng lặp PHP foreach(). Chúng tôi cũng xem xét cách sử dụng nó trong khi làm việc với một mảng được lập chỉ mục hoặc kết hợp

Mục lục - PHP foreach

  • foreach() là gì?
  • Mã và giải thích
  • mảng được lập chỉ mục
  • mảng kết hợp
  • Bớt tư tưởng

foreach trong PHP là gì?

Phương thức

foreach (iterable as $key => $value)
    statement
2 được sử dụng để lặp qua các phần tử trong một mảng được lập chỉ mục hoặc mảng kết hợp. Nó cũng có thể được sử dụng để lặp lại các đối tượng. Điều này cho phép bạn chạy các khối mã cho từng phần tử

Cú pháp của PHP foreach()

Phương thức foreach() có hai cú pháp, một cú pháp cho mỗi loại mảng

Cú pháp cho các mảng được lập chỉ mục như được đưa ra trong khối mã sau

foreach (iterable as $value)
    statement

Cú pháp cho mảng kết hợp

foreach (iterable as $key => $value)
    statement

Ở đây,

foreach (iterable as $key => $value)
    statement
3 là tham số bắt buộc. Nó là mảng hoặc biến chứa mảng.
foreach (iterable as $key => $value)
    statement
4 là một biến lưu trữ phần tử hiện tại trong mỗi lần lặp

Mảng được liên kết, sử dụng các khóa và giá trị, và do đó, cú pháp thứ hai là

foreach (iterable as $key => $value)
    statement
5 &
foreach (iterable as $key => $value)
    statement
6 tương ứng

Mã & Giải thích

Trong phần này, trước tiên chúng ta xem cách hàm

foreach (iterable as $key => $value)
    statement
2 hoạt động trên một mảng được lập chỉ mục, sau đó chúng ta xem xét nó hoạt động trên một mảng kết hợp

PHP Foreach() trên các mảng được lập chỉ mục

________số 8_______

Đầu ra của đoạn mã trên sẽ là

Hire
Top
Freelance
developers

PHP Foreach() trên một mảng Associated

<?php 
$freelancer = array( 
    "name" => "Eric", 
    "email" => "[email protected]", 
    "age" => 22, 
    "gender" => "male"
); 
  
// Loop through employee array 
foreach($freelancer as $key => $value) { 
    echo $key . ": " . $value . "<br>"; 
} 
?> 

Đầu ra của đoạn mã trên sẽ là

name: Eric
email: [email protected]
age: 22
gender: male

Bây giờ hãy xem trường hợp chúng ta truyền đối số thứ hai

Như bạn có thể thấy khóa và giá trị của mảng kết hợp đã được in. Ngoài ra, chúng tôi đã thay thế

foreach (iterable as $key => $value)
    statement
8 bằng
foreach (iterable as $key => $value)
    statement
9 để dễ đọc hơn

Bớt tư tưởng

Phương thức

foreach (iterable as $key => $value)
    statement
2 sẽ trả về lỗi trong trường hợp bạn sử dụng nó trên các biến có kiểu dữ liệu khác. Ngoài ra, phương pháp
foreach (iterable as $key => $value)
    statement
2 không sửa đổi các giá trị của con trỏ bên trong

Thông tin có thể được chuyển đến các hàm thông qua danh sách đối số, là danh sách các biểu thức được phân tách bằng dấu phẩy. Các đối số được đánh giá từ trái sang phải, trước khi hàm thực sự được gọi (đánh giá háo hức)

PHP hỗ trợ truyền đối số theo giá trị (mặc định), và. và cũng được hỗ trợ

Ví dụ #1 Truyền mảng cho hàm

function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>

Kể từ PHP 8. 0. 0, danh sách các đối số của hàm có thể bao gồm dấu phẩy ở cuối, dấu phẩy này sẽ bị bỏ qua. Điều đó đặc biệt hữu ích trong trường hợp danh sách đối số dài hoặc chứa tên biến dài, thuận tiện cho việc liệt kê đối số theo chiều dọc

Ví dụ #2 Danh sách đối số hàm có dấu phẩy ở cuối

function takes_many_args(
$first_arg,
$second_arg,
$a_very_long_argument_name,
$arg_with_default = 5,
$again = 'a default string', // This trailing comma was not permitted before 8.0.0.
)
{
// ...
}
?>

Truyền đối số bằng tham chiếu

Theo mặc định, các đối số của hàm được truyền theo giá trị (để nếu giá trị của đối số bên trong hàm bị thay đổi, nó sẽ không bị thay đổi bên ngoài hàm). Để cho phép một hàm sửa đổi các đối số của nó, chúng phải được chuyển qua tham chiếu

Để có một đối số cho một hàm luôn được truyền theo tham chiếu, hãy thêm dấu và (&) vào trước tên đối số trong định nghĩa hàm

Ví dụ #3 Truyền tham số hàm theo tham chiếu

function add_some_extra(&$string)
{
$string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str; // outputs 'This is a string, and something extra.'
?>

Có lỗi khi chuyển một giá trị làm đối số được cho là được chuyển theo tham chiếu

Giá trị đối số mặc định

Một hàm có thể xác định các giá trị mặc định cho các đối số bằng cách sử dụng cú pháp tương tự như gán một biến. Giá trị mặc định chỉ được sử dụng khi tham số không được chỉ định;

Ví dụ #4 Sử dụng tham số mặc định trong hàm

function makecoffee($type = "cappuccino")
{
return "Making a cup of $type.\n";
}
echo makecoffee();
echo makecoffee(null);
echo makecoffee("espresso");
?>

Ví dụ trên sẽ xuất ra

Making a cup of cappuccino.
Making a cup of .
Making a cup of espresso.

Giá trị tham số mặc định có thể là giá trị vô hướng, mảng, loại đặc biệt null và kể từ PHP 8. 1. 0, các đối tượng sử dụng cú pháp

Ví dụ #5 Sử dụng các loại không vô hướng làm giá trị mặc định

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42
1

Ví dụ #6 Sử dụng các đối tượng làm giá trị mặc định (kể từ PHP 8. 1. 0)

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42
2

Giá trị mặc định phải là một biểu thức hằng, không phải (ví dụ) một biến, thành viên lớp hoặc lệnh gọi hàm

Lưu ý rằng bất kỳ đối số tùy chọn nào cũng phải được chỉ định sau bất kỳ đối số bắt buộc nào, nếu không thì không thể bỏ qua chúng trong các cuộc gọi. Xem xét ví dụ sau

Ví dụ #7 Sử dụng sai đối số hàm mặc định

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42
3

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42
4

Ví dụ trên sẽ xuất ra

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42

Bây giờ, so sánh ở trên với điều này

Ví dụ #8 Cách sử dụng đúng đối số hàm mặc định

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42
5

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42
6

Ví dụ trên sẽ xuất ra

Making a bowl of raspberry yogurt.

Kể từ PHP 8. 0. 0, có thể được sử dụng để bỏ qua nhiều tham số tùy chọn

Ví dụ #9 Cách sử dụng đúng đối số hàm mặc định

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42
7

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42
8

Ví dụ trên sẽ xuất ra

Making a bowl of raspberry natural yogurt.

Kể từ PHP 8. 0. 0, khai báo các đối số bắt buộc sau các đối số tùy chọn không được dùng nữa. Điều này thường có thể được giải quyết bằng cách loại bỏ giá trị mặc định, vì nó sẽ không bao giờ được sử dụng. Một ngoại lệ đối với quy tắc này là các đối số có dạng

Fatal error: Uncaught ArgumentCountError: Too few arguments
 to function makeyogurt(), 1 passed in example.php on line 42
9, trong đó mặc định ____62_______ làm cho loại hoàn toàn vô giá trị. Việc sử dụng này vẫn được cho phép, mặc dù vậy nên sử dụng cách rõ ràng thay thế

Ví dụ #10 Khai báo đối số tùy chọn sau đối số bắt buộc

Making a bowl of raspberry yogurt.
1

Making a bowl of raspberry yogurt.
2

Ghi chú. Kể từ PHP 7. 1. 0, việc bỏ qua tham số không chỉ định tham số mặc định sẽ gây ra lỗi ArgumentCountError;

Ghi chú. Các đối số được truyền theo tham chiếu có thể có giá trị mặc định

Danh sách đối số có độ dài thay đổi

PHP có hỗ trợ danh sách đối số có độ dài thay đổi trong các hàm do người dùng xác định bằng cách sử dụng mã thông báo

Making a bowl of raspberry yogurt.
3

Ghi chú. Cũng có thể đạt được các đối số có độ dài thay đổi bằng cách sử dụng các hàm func_num_args(), func_get_arg() và func_get_args(). Kỹ thuật này không được khuyến nghị vì nó đã được sử dụng trước khi giới thiệu mã thông báo

Making a bowl of raspberry yogurt.
3

Danh sách đối số có thể bao gồm mã thông báo

Making a bowl of raspberry yogurt.
3 để biểu thị rằng hàm chấp nhận số lượng đối số thay đổi. Các đối số sẽ được chuyển vào biến đã cho dưới dạng một mảng

Ví dụ #11 Sử dụng

Making a bowl of raspberry yogurt.
3 để truy cập các đối số của biến

Making a bowl of raspberry yogurt.
7

Making a bowl of raspberry yogurt.
8

Ví dụ trên sẽ xuất ra

Making a bowl of raspberry yogurt.
3 cũng có thể được sử dụng khi gọi các hàm để giải nén một mảng hoặc biến Traversable hoặc ký tự vào danh sách đối số

Ví dụ #12 Sử dụng

Making a bowl of raspberry yogurt.
3 để cung cấp đối số

Making a bowl of raspberry natural yogurt.
1

Making a bowl of raspberry natural yogurt.
2

Making a bowl of raspberry natural yogurt.
3

Ví dụ trên sẽ xuất ra

Bạn có thể chỉ định các đối số vị trí thông thường trước mã thông báo

Making a bowl of raspberry yogurt.
3. Trong trường hợp này, chỉ các đối số theo sau không khớp với đối số vị trí mới được thêm vào mảng được tạo bởi
Making a bowl of raspberry yogurt.
3

Cũng có thể thêm một khai báo kiểu trước mã thông báo

Making a bowl of raspberry yogurt.
3. Nếu điều này xuất hiện, thì tất cả các đối số do
Making a bowl of raspberry yogurt.
3 nắm bắt phải khớp với loại tham số đó

Ví dụ #13 Loại đối số biến được khai báo

Making a bowl of raspberry natural yogurt.
8

Making a bowl of raspberry natural yogurt.
9

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2
0

Ví dụ trên sẽ xuất ra

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2

Cuối cùng, các đối số biến cũng có thể được chuyển bằng cách thêm vào trước _____24_______3 một dấu và (

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2
2)

Các phiên bản cũ hơn của PHP

Không cần cú pháp đặc biệt nào để lưu ý rằng một hàm là biến thiên;

Ví dụ đầu tiên ở trên sẽ được triển khai như sau trong các phiên bản PHP cũ

Ví dụ #14 Truy cập đối số biến trong các phiên bản PHP cũ

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2
3

Making a bowl of raspberry yogurt.
8

Ví dụ trên sẽ xuất ra

Đối số được đặt tên

PHP8. 0. 0 đã giới thiệu các đối số được đặt tên dưới dạng phần mở rộng của các tham số vị trí hiện có. Đối số được đặt tên cho phép truyền đối số cho hàm dựa trên tên tham số, thay vì vị trí tham số. Điều này làm cho ý nghĩa của đối số tự ghi lại, làm cho các đối số không phụ thuộc vào thứ tự và cho phép bỏ qua các giá trị mặc định một cách tùy ý

Các đối số được đặt tên được truyền bằng cách thêm tiền tố vào giá trị với tên tham số theo sau là dấu hai chấm. Cho phép sử dụng các từ khóa dành riêng làm tên tham số. Tên tham số phải là một mã định danh, không được phép chỉ định động

Ví dụ #15 Cú pháp đối số được đặt tên

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2
5

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2
6

Ví dụ #16 Đối số vị trí so với đối số được đặt tên

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2
7

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2
8

Thứ tự mà các đối số được đặt tên được thông qua không quan trọng

Ví dụ #17 Ví dụ tương tự như trên với thứ tự tham số khác

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2
9

Đối số được đặt tên có thể được kết hợp với đối số vị trí. Trong trường hợp này, các đối số được đặt tên phải xuất hiện sau các đối số vị trí. Cũng có thể chỉ định một số đối số tùy chọn của hàm, bất kể thứ tự của chúng

Ví dụ #18 Kết hợp đối số được đặt tên với đối số vị trí

function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>
0

Truyền cùng một tham số nhiều lần dẫn đến ngoại lệ Lỗi

Ví dụ #19 Đã xảy ra lỗi khi truyền cùng một tham số nhiều lần

function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>
1

function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>
2

Kể từ PHP 8. 1. 0, có thể sử dụng các đối số được đặt tên sau khi giải nén các đối số. Đối số được đặt tên không được ghi đè lên đối số đã được giải nén

Làm cách nào để điền vào mảng kết hợp trong PHP?

Bạn đang ghi đè lên các giá trị trong mảng, hãy thử điều này. $clients = $repo->findAll(); . Or you can use array_map function.

Làm cách nào để tìm nạp mảng kết hợp trong PHP?

Hàm fetch_assoc() / mysqli_fetch_assoc() tìm nạp một hàng kết quả dưới dạng một mảng kết hợp. Ghi chú. Tên trường được trả về từ hàm này phân biệt chữ hoa chữ thường.

Mảng kết hợp nào được sử dụng để truyền dữ liệu tới PHP?

Vòng lặp được sử dụng để duyệt qua các mảng Kết hợp trong PHP.

Hàm nào sẽ chỉ trả về một mảng kết hợp trong PHP?

mysql_fetch_assoc() tương đương với việc gọi mysql_fetch_array() với MYSQL_ASSOC cho tham số thứ hai tùy chọn. Nó chỉ trả về một mảng kết hợp.