2016-02-13 70 views
2

我有這樣的功能:如何在使用之前檢查返回值是否爲數組?

//get mgs by orderID 
function getOrderMsgs($orderId){ 
    global $conn; 
    $query = "SELECT * "; 
    $query .= "FROM msgs "; 
    $query .= "WHERE orderid=" . $orderId . " "; 
    $msgset = mysqli_query($conn, $query); 
    confirm_query($msgset); 
    while ($msg = mysqli_fetch_assoc($msgset)){ 
     $return[] = $msg; 
    } 
    return $return; 
} 

一個具有某種消息ID返回的所有消息。現在我需要做的是檢查返回的值是否確實是一個數組,因爲在查詢之後,我們可能找不到具有該特定Id的消息,我相信這些消息不會返回數組。到目前爲止,這是我:

$msgId = sql_prep($_GET['oid']); 
$order = getOrderById($msgId); 
$msgs=getOrderMsgs($msgId); 
echo '<h2>Order #'.$order['orderid'].': '.$order['title'].'</h2>'; 
echo '<h3>Message thread</h3>'; 
foreach($msgs as $msg){ 
    echo $msg['msg'].'<br>'.$msg['sender'].'<br>'.$msg['timestamp'].'<br><br>'; 
} 

,如果有與DB該ID不封郵件則返回錯誤。

+3

你有沒有試過Google搜索'is_array'? –

+0

謝謝。我不知道這個功能。它拯救了我的生命。 – Khakali

回答

0

要查看變量的類型,你可以使用gettype

print_r(gettype($_COOKIE)); 
0

請確保您在使用它之前初始化$return。這確保你總是返回一個數組。

function getOrderMsgs($orderId){ 
    global $conn; 
    $return = array(); // initialize variable 

    $query = "SELECT * "; 
    $query .= "FROM msgs "; 
    $query .= "WHERE orderid=" . $orderId . " "; 
    $msgset = mysqli_query($conn, $query); 
    confirm_query($msgset); 
    while ($msg = mysqli_fetch_assoc($msgset)){ 
     $return[] = $msg; 
    } 
    return $return; 
} 

在你的代碼中,你可以檢查數組並使用數組元素來決定下一步該做什麼。

$order = getOrderById($msgId); 
if(count($order) > 0) { 
    // Found something 
} else { 
    // Nothing found 
} 
相關問題