2012-11-09 44 views
12

thể trùng lặp:
Undefined variable problem with PHP functionKhông xác định lỗi biến trong PHP bao gồm nộp

Ai đó có thể cho tôi biết tại sao tôi tiếp tục nhận được thông điệp biến lỗi không xác định trong PHP của tôi bao gồm các tập tin?

<?php 

$page = 1; 

if (isset($_REQUEST['page'])) { 
    $page = $_REQUEST['page']; 
} 

function phpRocks() { 
    require("includes/dostuff.php"); 
} 

if ($search) { 
    phpRocks(); 
} 

?> 

Sau đó, trong dostuff.php:

<?php echo $page; ?> 

Đây là lỗi tôi nhận được:


Thông báo: biến Không xác định: Trang trong /dostuff.php trên dòng

Thu gọn cử tri/người yêu cầu đóng: Không thể hiện nỗ lực nghiên cứu nào? Làm thế nào? Tôi nên thêm gì khác? Tôi đã bị bối rối về điều này trong một nửa giờ và không thể tìm thấy bất kỳ bài viết nào khác trả lời câu hỏi này. Tôi có cần phải là một chuyên gia về PHP để đăng câu hỏi hay không (do đó tôi sẽ không đăng bất kỳ câu hỏi nào!) ??

+2

phạm vi biến. Bạn đang khai báo trong phạm vi toàn cục, nhưng mở khuôn mẫu từ một hàm có phạm vi var cục bộ riêng của nó. – mario

+0

bạn có chắc '$ page' đang được thiết lập không? – sgroves

+1

'phpRocks()' được gọi là ở đâu? –

Trả lời

9

Mario đã bị nó. Thực hiện việc này:

function phpRocks() { 
    global $page; 

    require("includes/dostuff.php"); 
} 
+2

Đó chỉ là những gì tôi cần. Cảm ơn! – Zoolander

+0

Đọc trên phạm vi Zoolander, đó là vấn đề của bạn ở đây – zomboble

2

thêm var toàn cầu trong quý vị chức năng như thế

function phpRocks() { 
    global $page; 
    require("includes/dostuff.php"); 
} 
7

Bạn đang bao gồm tệp bên trong một hàm. Do đó phạm vi của tất cả mã được bao gồm là phạm vi của hàm. Biến số $page không tồn tại bên trong hàm. Vượt qua nó trong:

function phpRocks($page) { 
    require "includes/dostuff.php"; 
} 

phpRocks($page); 
+5

Tại sao tôi là người duy nhất ở đây rễ cho tiêm hơn là 'toàn cầu' spaghetti? – deceze

+1

Mọi người khác đưa bình luận của Mario vào dạng câu trả lời cho danh tiếng dễ dàng. Bạn là người duy nhất thực sự thêm một cái gì đó có liên quan. –

+0

Tôi không chắc đây có phải là giải pháp tốt nhất hay không. '$ page' _should_ là một biến toàn cầu ở đây IMO ... nó là một biến được tạo ra trong phạm vi toàn cục mà một tệp được bao gồm cần sử dụng. Các cuộc gọi chức năng không có bất cứ điều gì để làm với điều đó. Thêm vào đó, anh ta có thể muốn chuyển các đối số "thực" cho hàm trong tương lai, được sử dụng bên ngoài 'dostuff.php'. Điều này tránh nhầm lẫn giữa hai người. – sgroves

1

Bạn phải khai báo biến để toàn cầu như thế này:

function phpRocks() { 
global $page;   //set variable to global 
require("includes/dostuff.php"); 
} 
Các vấn đề liên quan