2017-12-01 5 views
-2

클래스에서 배열을 반환 할 때 "정의되지 않은 변수"오류가 발생하지만 왜 이런 일이 발생하는지 이해할 수 없습니다.클래스에서 배열을 반환 할 때 "정의되지 않은 변수 오류"가 나타나는 이유는 무엇입니까?

클래스 내에서 내가 print_r($order_ids) 인 경우 문제가 없습니다. 이 문제는 클래스 외부에서 print_r($order_ids)을 시도 할 때만 발생합니다.

클래스 함수는

function getOrderIds($start_order, $end_order) { 

    $conn = new Database(); 

    $sql = "SELECT order_id FROM oc_order WHERE order_status_id = '17' AND order_id BETWEEN '$start_order' AND '$end_order'"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      $order_ids[] = $row['order_id']; 
     } 
    } 

    return($order_ids); 

} 

CALL

$order = new Order(); 
$order->getOrderIds($start_order, $end_order); 

print_r($order_ids); 

RESULT

Notice: Undefined variable: order_ids 
+1

누락 파일 : $ order_ids = $ 순서 -> getOrderIds의 ($ start_order, $의 end_order); //? – kmdm

+0

함수 getOrderIds ($ start_order, $ end_order) { }를'function getOrderIds ($ start_order = null, $ end_order = null) { } '으로 변경하는 것이 좋습니다. 두 변수 중 하나가 비어있는 경우 거짓을 반환 할 수 있습니다. –

답변

2
$order = new Order(); 
$order_ids = $order->getOrderIds($start_order, $end_order); 

print_r($order_ids); 
+0

고맙습니다.이 방법이 효과가 있지만 왜 내 방법이 효과가 없었는지 잘 모르겠습니다. 나의 이해는'return' 함수가 나를 위해 $ order_ids를 정의한다는 것이다. '돌아 오는 길 '에 대한 나의 이해가 어디서 잘못 될지 아십니까? – Syn

+0

변수 $ order_ids가 클래스의 getOrderIds 함수에 정의되어 있지만이 함수 밖에서는 접근 할 수 없습니다. 함수를 반환하면 변수가 아니라 변수의 값이 반환됩니다. – Ciro