Hướng dẫn can i create function in the function of php? - tôi có thể tạo chức năng trong chức năng của php không?

Chức năng bên trong một hàm hoặc được gọi là các hàm lồng nhau rất có thể sử dụng nếu bạn cần thực hiện một số quy trình đệ quy như lặp nhiều lớp thực sự hoặc cây tệp mà không có nhiều vòng hoặc đôi khi tôi sử dụng nó để tránh tạo các lớp cho các công việc nhỏ yêu cầu phân chia và cách ly chức năng giữa nhiều chức năng. Nhưng trước khi bạn đi cho các chức năng lồng nhau, bạn phải hiểu điều đó or so called nested functions are very usable if you need to do some recursion processes such as looping true multiple layer of array or a file tree without multiple loops or sometimes i use it to avoid creating classes for small jobs which require dividing and isolating functionality among multiple functions. but before you go for nested functions you have to understand that

  1. Chức năng con sẽ không khả dụng trừ khi chức năng chính được thực thi
  2. Khi chức năng chính được thực thi, các chức năng con sẽ có sẵn trên toàn cầu để truy cập
  3. Nếu bạn cần gọi chức năng chính hai lần, nó sẽ cố gắng xác định lại hàm con và điều này sẽ gây ra lỗi nghiêm trọng

Vì vậy, điều này có nghĩa là bạn không thể sử dụng các chức năng lồng nhau? Không, bạn có thể với các cách giải quyết dưới đây

Phương pháp đầu tiên là chặn chức năng con được khai báo lại vào ngăn xếp chức năng toàn cầu bằng cách sử dụng khối có điều kiện tồn tại chức năng, điều này sẽ ngăn chặn chức năng được khai báo nhiều lần vào ngăn xếp chức năng toàn cầu.

function myfunc($a,$b=5){
    if(!function_exists("child")){
        function child($x,$c){
            return $c+$x;   
        }
    }
    
    try{
        return child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

//once you have invoke the main function you will be able to call the child function
echo myfunc(10,20)+child(10,10);

và phương pháp thứ hai sẽ giới hạn phạm vi chức năng của trẻ đến cục bộ thay vì toàn cầu, để làm điều đó bạn phải xác định hàm là hàm ẩn danh và gán nó cho một biến cục bộ, thì hàm sẽ chỉ có sẵn trong phạm vi cục bộ và sẽ được khai báo và gọi mỗi khi bạn gọi chức năng chính.Anonymous function and assign it to a local variable, then the function will only be available in local scope and will re declared and invokes every time you call the main function.

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);

Hãy nhớ rằng đứa trẻ sẽ không có sẵn bên ngoài chức năng chính hoặc ngăn xếp chức năng toàn cầu

Tôi có thể tạo một hàm bên trong một hàm PHP không?

Lưu ý rằng PHP không thực sự hỗ trợ "các chức năng lồng nhau", như chỉ được xác định trong phạm vi của hàm cha. Tất cả các chức năng được xác định trên toàn cầu.Create a function dynamically by evaluating a string of code

Làm thế nào chúng ta có thể tạo một chức năng trong PHP?

Trong PHP, tên hàm là bất kỳ tên nào kết thúc trong dấu ngoặc đơn mở và đóng. Hàm từ khóa thường được sử dụng để bắt đầu một tên hàm. Để gọi một chức năng, chỉ cần nhập tên của nó theo sau là dấu ngoặc đơn. Một số không thể là ký tự đầu tiên trong một tên tính năng.

PHP có hỗ trợ các chức năng lồng nhau không?

Các chức năng lồng nhau (AKA: Các hàm bên trong các hàm) có thể có trong PHP và đôi khi được sử dụng dưới dạng các hàm ẩn danh. Cũng có thể tạo các chức năng được đặt tên bên trong các chức năng khác, giống như bạn làm trong PHP thủ tục; Nhưng tôi sẽ không đề nghị điều này.(string $args, string $code): string

(Php 4> = 4.0.1, Php 5, Php 7)

created_function - Tạo một hàm động bằng cách đánh giá một chuỗi mãeval() and as such has the same security issues as eval(). It also has bad performance and memory usage characteristics, because the created functions are global and can not be freed.

Cảnh báo

Chức năng này đã được không dùng nữa kể từ Php 7.2.0 và được loại bỏ kể từ Php 8.0.0. Dựa vào chức năng này là rất nản lòng.

Sự mô tả

created_function (Chuỗi $args, chuỗi $code): Chuỗi

Thận trọng

Hàm này thực hiện một eval () và do đó có các vấn đề bảo mật tương tự như eval (). Nó cũng có hiệu suất xấu và đặc điểm sử dụng bộ nhớ, bởi vì các chức năng được tạo là toàn cầu và không thể được giải phóng.

Thay vào đó, một hàm ẩn danh bản địa nên được sử dụng.

Thông số

Thông thường nên vượt qua các tham số này như các chuỗi được trích dẫn đơn. Nếu sử dụng các chuỗi được trích dẫn kép, các tên biến trong mã cần được thoát cẩn thận, ví dụ: ________số 8.

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
1 on failure. Note that the name contains a non-printable character (
function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
2), so care should be taken when printing the name or incorporating it in any other string.

args

Các đối số chức năng, như một chuỗi được phân tách bằng dấu phẩy.create_function() or anonymous functions

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
0create_function():

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
3

Mã chức năng.

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
4

Trả về giá trị

ln(2) + ln(2.718281828459) = 1.6931471805599

Trả về một tên hàm duy nhất dưới dạng chuỗi hoặc

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
1 khi thất bại. Lưu ý rằng tên chứa một ký tự không thể in (
function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
2), vì vậy nên cẩn thận khi in tên hoặc kết hợp nó trong bất kỳ chuỗi nào khác.create_function() or anonymous functions

Ví dụ

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
5

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
6

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
7

Ví dụ #1 Tạo hàm động, với các hàm created_function () hoặc ẩn danh

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
8

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
6

ln(2) + ln(2.718281828459) = 1.6931471805599
0

Trả về giá trị

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)

Trả về một tên hàm duy nhất dưới dạng chuỗi hoặc

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
1 khi thất bại. Lưu ý rằng tên chứa một ký tự không thể in (
function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
2), vì vậy nên cẩn thận khi in tên hoặc kết hợp nó trong bất kỳ chuỗi nào khác.

Ví dụarray_walk() or usort().

ln(2) + ln(2.718281828459) = 1.6931471805599
1

ln(2) + ln(2.718281828459) = 1.6931471805599
2

Trả về giá trị

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)

Trả về một tên hàm duy nhất dưới dạng chuỗi hoặc

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
1 khi thất bại. Lưu ý rằng tên chứa một ký tự không thể in (
function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
2), vì vậy nên cẩn thận khi in tên hoặc kết hợp nó trong bất kỳ chuỗi nào khác.create_function():

ln(2) + ln(2.718281828459) = 1.6931471805599
3

ln(2) + ln(2.718281828459) = 1.6931471805599
4

Trả về giá trị

Original:
Array
(
  [0] => small
  [1] => a big string
  [2] => larger
  [3] => it is a string thing
)
Sorted:
Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)

Trả về một tên hàm duy nhất dưới dạng chuỗi hoặc

function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
1 khi thất bại. Lưu ý rằng tên chứa một ký tự không thể in (
function myfunc($a,$b=5){
    $child = function ($x,$c){
        return $c+$x;   
    };
    
    try{
        return $child($a,$b);
    }catch(Exception $e){
        throw $e;
    }
    
}

echo myfunc(10,20);
2), vì vậy nên cẩn thận khi in tên hoặc kết hợp nó trong bất kỳ chuỗi nào khác.

Ví dụ

ln(2) + ln(2.718281828459) = 1.6931471805599
5

Ví dụ #1 Tạo hàm động, với các hàm created_function () hoặc ẩn danh

15 năm trước

ln(2) + ln(2.718281828459) = 1.6931471805599
6

ln(2) + ln(2.718281828459) = 1.6931471805599
7

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Phlyst ¶

15 năm trước

ln(2) + ln(2.718281828459) = 1.6931471805599
9

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)
0

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Phlyst ¶

16 năm trước

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)
2

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)
3

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)
4

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)
5

Kkaiser tại Revolution-Records Dot Net

15 năm trước

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)
6

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)
7

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)
8

Using the first array of dynamic functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of dynamic functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: 3569586014, 342550513
similar(a,b) = 11(45.833333333333%)
9

Thông tin tại Adaniels Dot NL ¶

16 năm trước

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)
0

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)
1

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Chắc chắn ¶

9 năm trước

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)
3

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)
4

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Dave H ¶

11 năm trước

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)
6

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)
7

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)
8

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)
9

lombax85 tại gmail dot com

1 năm trước

Original:
Array
(
  [0] => small
  [1] => a big string
  [2] => larger
  [3] => it is a string thing
)
Sorted:
Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)
0

Neo tại Nowhere dot com ¶

14 năm trước

Original:
Array
(
  [0] => small
  [1] => a big string
  [2] => larger
  [3] => it is a string thing
)
Sorted:
Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)
1

Original:
Array
(
  [0] => small
  [1] => a big string
  [2] => larger
  [3] => it is a string thing
)
Sorted:
Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)
2

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Alan Fung

14 năm trước

Original:
Array
(
  [0] => small
  [1] => a big string
  [2] => larger
  [3] => it is a string thing
)
Sorted:
Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)
4

Original:
Array
(
  [0] => small
  [1] => a big string
  [2] => larger
  [3] => it is a string thing
)
Sorted:
Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)
5

Original:
Array
(
  [0] => small
  [1] => a big string
  [2] => larger
  [3] => it is a string thing
)
Sorted:
Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)
6

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Alan Fung

14 năm trước

Original:
Array
(
  [0] => small
  [1] => a big string
  [2] => larger
  [3] => it is a string thing
)
Sorted:
Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)
8

Original:
Array
(
  [0] => small
  [1] => a big string
  [2] => larger
  [3] => it is a string thing
)
Sorted:
Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)
9

$args0

$args1

$args2

Alan Fung

15 năm trước

$args3

Rene Saarsoo ¶

16 năm trước

$args4

$args5

$args6

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Chắc chắn ¶

16 năm trước

$args8

Chắc chắn ¶

16 năm trước

$args9

$code0

$code1

$code2

Chắc chắn ¶

16 năm trước

$code3

$code4

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Chắc chắn ¶

9 năm trước

$code6

$code7

$code8

$code9

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Dave H ¶

9 năm trước

\$somevar1

\$somevar2

\$somevar3

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Dave H ¶

11 năm trước

\$somevar5

\$somevar6

\$somevar7

\$somevar8

\$somevar9

lombax85 tại gmail dot com

1 năm trước

args0

args1

ln(2) + ln(2.718281828459) = 1.6931471805599
8

Neo tại Nowhere dot com ¶

14 năm trước

args3

args4

args5

args6

args7

Tôi có thể tạo một hàm bên trong một hàm PHP không?

Lưu ý rằng PHP không thực sự hỗ trợ "các chức năng lồng nhau", như chỉ được xác định trong phạm vi của hàm cha.Tất cả các chức năng được xác định trên toàn cầu.PHP doesn't really support "nested functions", as in defined only in the scope of the parent function. All functions are defined globally.

Làm thế nào chúng ta có thể tạo một chức năng trong PHP?

Trong PHP, tên hàm là bất kỳ tên nào kết thúc trong dấu ngoặc đơn mở và đóng.Hàm từ khóa thường được sử dụng để bắt đầu một tên hàm.Để gọi một chức năng, chỉ cần nhập tên của nó theo sau là dấu ngoặc đơn.Một số không thể là ký tự đầu tiên trong một tên tính năng.To invoke a function, simply type its name followed by the parenthesis. A number cannot be the first character in a feature name.

PHP có hỗ trợ các chức năng lồng nhau không?

Các chức năng lồng nhau (AKA: Các hàm bên trong các hàm) có thể có trong PHP và đôi khi được sử dụng dưới dạng các hàm ẩn danh.Cũng có thể tạo các chức năng được đặt tên bên trong các chức năng khác, giống như bạn làm trong PHP thủ tục;Nhưng tôi sẽ không đề nghị điều này., and sometimes used in the form of anonymous functions. It is also possible to create named functions inside of other functions, just as you do in procedural PHP; but I would not recommend this.