Hướng dẫn php use variable inside function - php sử dụng biến bên trong hàm

82

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

function parts($part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo($tructure . $part . '.php'); 
}

Hàm này sử dụng một biến

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
0 được xác định ở đầu trang này, nhưng biến này không được chuyển vào hàm.

Làm thế nào để chúng ta có được nó để trở lại trong chức năng?

Hướng dẫn php use variable inside function - php sử dụng biến bên trong hàm

hỏi ngày 18 tháng 6 năm 2012 lúc 16:09Jun 18, 2012 at 16:09

Thêm tham số thứ hai

Bạn cần chuyển tham số bổ sung cho chức năng của mình:

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}

Trong trường hợp đóng cửa

Nếu bạn muốn sử dụng đóng cửa thì bạn có thể nhập biến vào phạm vi hiện tại (từ khóa

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
1):

$parts = function($part) use ($site_url) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
};

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
2 - Một thực hành tồi

Bài đăng này thường được đọc, vì vậy một cái gì đó cần phải được làm rõ về

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
2. Sử dụng nó được coi là một thực hành xấu (tham khảo điều này và điều này).

Đối với tính đầy đủ, đây là giải pháp sử dụng

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
2:

function parts($part) { 
    global $site_url;
    $structure = 'http://' . $site_url . 'content/'; 
    echo($structure . $part . '.php'); 
}

Nó hoạt động bởi vì bạn phải nói với trình thông dịch rằng bạn muốn sử dụng một biến toàn cầu, bây giờ nó nghĩ rằng đó là một biến cục bộ (trong chức năng của bạn).

Cách đọc được đề nghị:

  • Phạm vi biến trong PHP
  • Chức năng ẩn danh

Đã trả lời ngày 18 tháng 6 năm 2012 lúc 16:11Jun 18, 2012 at 16:11

ZBigniewzBigniewZbigniew

26,5K6 Huy hiệu vàng56 Huy hiệu bạc64 Huy hiệu đồng6 gold badges56 silver badges64 bronze badges

3

Ngoài ra, bạn có thể mang các biến vào từ phạm vi bên ngoài bằng cách sử dụng đóng cửa với từ khóa

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
1.

$myVar = "foo";
$myFunction = function($arg1, $arg2) use ($myVar)
{
 return $arg1 . $myVar . $arg2;
};

Đã trả lời ngày 18 tháng 6 năm 2012 lúc 16:13Jun 18, 2012 at 16:13

Joe Greenjoe GreenJoe Green

1.7351 Huy hiệu vàng12 Huy hiệu bạc17 Huy hiệu đồng1 gold badge12 silver badges17 bronze badges

6

Đừng quên rằng bạn cũng có thể vượt qua các biến

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
1 này bằng cách tham chiếu.

Các trường hợp sử dụng là khi bạn cần thay đổi biến ________ 11 từ bên trong cuộc gọi lại của bạn (ví dụ: tạo ra mảng mới của các đối tượng khác nhau từ một số mảng nguồn của các đối tượng).

$sourcearray = [ (object) ['a' => 1], (object) ['a' => 2]];
$newarray = [];
array_walk($sourcearray, function ($item) use (&$newarray) {
    $newarray[] = (object) ['times2' => $item->a * 2];
});
var_dump($newarray);

Bây giờ

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
8 sẽ bao gồm (mã giả ở đây cho sự ngắn gọn)
function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
9.

Ngược lại, sử dụng

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
8 mà không có công cụ sửa đổi
$parts = function($part) use ($site_url) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
};
1 sẽ làm cho biến
function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
8 bên ngoài chỉ có thể đọc được từ trong phạm vi đóng. Nhưng
function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
8 trong phạm vi đóng cửa sẽ là một biến hoàn toàn khác được tạo ra chỉ sống trong phạm vi đóng.

Mặc dù tên của cả hai biến đều giống nhau, đây sẽ là hai biến khác nhau. Biến

function parts($site_url, $part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
}
8 bên ngoài sẽ bao gồm
$parts = function($part) use ($site_url) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo $structure . $part . '.php'; 
};
5 trong trường hợp này sau khi mã hoàn thành.

Đã trả lời ngày 22 tháng 9 năm 2018 lúc 17:32Sep 22, 2018 at 17:32

Valentine Shivalentine ShiValentine Shi

5.5423 Huy hiệu vàng41 Huy hiệu bạc41 Huy hiệu đồng3 gold badges41 silver badges41 bronze badges

1

Tôi cho rằng điều này phụ thuộc vào kiến ​​trúc của bạn và bất cứ điều gì bạn có thể cần xem xét, nhưng bạn cũng có thể thực hiện cách tiếp cận hướng đối tượng và sử dụng một lớp.

class ClassName {

    private $site_url;

    function __construct( $url ) {
        $this->site_url = $url;
    }

    public function parts( string $part ) {
        echo 'http://' . $this->site_url . 'content/' . $part . '.php';
    }

    # You could build a bunch of other things here
    # too and still have access to $this->site_url.
}

Sau đó, bạn có thể tạo và sử dụng đối tượng bất cứ nơi nào bạn muốn.

$obj = new ClassName($site_url);
$obj->parts('part_argument');

Điều này có thể là quá mức cần thiết cho những gì OP đặc biệt cố gắng đạt được, nhưng ít nhất đó là một tùy chọn tôi muốn đặt lên bàn cho những người mới đến vì chưa có ai đề cập đến nó.

Ưu điểm ở đây là khả năng mở rộng và ngăn chặn. Ví dụ: nếu bạn thấy mình cần phải vượt qua các biến tương tự như tham chiếu đến nhiều chức năng vì lợi ích của một nhiệm vụ chung, đó có thể là một chỉ số cho thấy một lớp theo thứ tự.

Đã trả lời ngày 23 tháng 12 năm 2020 lúc 22:10Dec 23, 2020 at 22:10

Hướng dẫn php use variable inside function - php sử dụng biến bên trong hàm

Leon Williamsleon WilliamsLeon Williams

5841 Huy hiệu vàng6 Huy hiệu bạc15 Huy hiệu đồng1 gold badge6 silver badges15 bronze badges

Tôi đã có câu hỏi tương tự. Trả lời: Sử dụng toàn cầu. Và có những lựa chọn khác. Nhưng nếu bạn cần chức năng được đặt tên với việc sử dụng phạm vi bên ngoài, thì đây là những gì tôi có:global. And there are other options. But if you need named function with usage of outside scope, here what I have:

global $myNamedFunctionWidelyAccessibleCallableWithScope;
$myNamedFunctionWidelyAccessibleCallableWithScope =
    function ($argument) use ($part, $orWhatYouWant) {
        echo($argument . $part . '.php');
        // do something here
        return $orWhatYouWant;
    };
function myNamedFunctionWidelyAccessible(string $argument)
{
    global $myNamedFunctionWidelyAccessibleCallableWithScope;
    return $myNamedFunctionWidelyAccessibleCallableWithScope($argument);
}

Nó rất hữu ích cho việc làm cho chức năng MynamedFunctionWidelyAccessible có thể tích lũy được từ mọi nơi, nhưng cũng liên kết nó với phạm vi. Và tôi cố tình đặt tên rất dài, những điều toàn cầu là xấu xa :(

Đây là tài liệu với một ví dụ tốt

Đã trả lời ngày 8 tháng 6 năm 2021 lúc 11:38Jun 8, 2021 at 11:38

GrigorygrigoryGrigory

3552 Huy hiệu bạc10 Huy hiệu Đồng2 silver badges10 bronze badges

Chỉ cần đặt chức năng bằng cách sử dụng từ khóa toàn cầu:

 global $site_url;

Hướng dẫn php use variable inside function - php sử dụng biến bên trong hàm

Tarangp

2.6735 huy hiệu vàng21 Huy hiệu bạc38 Huy hiệu đồng5 gold badges21 silver badges38 bronze badges

Đã trả lời ngày 18 tháng 6 năm 2012 lúc 16:11Jun 18, 2012 at 16:11

HBv6HBv6HBv6

ZBigniewzBigniew4 gold badges30 silver badges43 bronze badges

1

Làm thế nào để bạn gọi một biến bên trong một hàm trong PHP?

Có hai phương pháp để làm điều này. Một được gọi trực tiếp chức năng theo tên biến bằng cách sử dụng khung và tham số và tên kia là bằng cách sử dụng hàm call_user_func () nhưng trong cả hai tên biến của phương thức sẽ được sử dụng. call_user_func ($ var);calling function by variable name using bracket and parameters and the other is by using call_user_func() Function but in both method variable name is to be used. call_user_func( $var );

Làm thế nào có thể sử dụng biến trong một hàm trong một PHP khác?

Bạn cần khởi tạo (tạo) $ newvar bên ngoài chức năng trước tiên.Sau đó, nó sẽ được xem bởi chức năng khác của bạn.Bạn thấy đấy, phạm vi xác định những đối tượng nào có thể được nhìn thấy các đối tượng khác.Nếu bạn tạo một biến trong một hàm, nó sẽ chỉ có thể sử dụng từ bên trong chức năng đó.instantiate (create) $newVar outside of the function first. Then it will be view-able by your other function. You see, scope determines what objects can be seen other objects. If you create a variable within a function, it will only be usable from within that function.

Làm thế nào có thể sử dụng biến toàn cầu bên trong chức năng trong PHP?

Truy cập biến toàn cầu bên trong hàm: Các cách để truy cập biến toàn cầu bên trong các chức năng là: sử dụng từ khóa toàn cầu.Sử dụng Array Globals [VAR_NAME]: Nó lưu trữ tất cả các biến toàn cầu trong một mảng có tên $ Globals [var_name].Var_name là tên của biến.Using global keyword. Using array GLOBALS[var_name]: It stores all global variables in an array called $GLOBALS[var_name]. Var_name is the name of the variable.

Chúng ta có thể khai báo biến bên trong chức năng không?

Phạm vi là một khu vực của chương trình và nói rộng rãi có ba vị trí, trong đó các biến có thể được khai báo: bên trong một hàm hoặc một khối được gọi là các biến cục bộ, trong định nghĩa của các tham số hàm được gọi là tham số chính thức.Inside a function or a block which is called local variables, In the definition of function parameters which is called formal parameters.