2016-02-13 68 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 
} 
相关问题