2012-05-16 53 views
0

我有一個簡單的PHP函數,將基於一個唯一的ID數據庫中抓取信息:PHP - 刪除一個陣列層

function oracleGetGata($query, $id="id") { 
    global $conn; 

    $results = array(); 
    $sql = OCI_Parse($conn, $query); 
    OCI_Execute($sql); 
    while (false!==($row=oci_fetch_assoc($sql))) { 
     $results[ $row[$id] ] = $row; 
    } 
    return $results; 
} 

因此,例如$array = oracleGetData('select * from table')將返回:

[1] => Array 
(
    [Title] => Title 1 
    [Description] => Description 1 
) 
[2] => Array 
(
    [Title] => Title 2 
    [Description] => Description 2 
) 

這但是,如果我只想返回一條記錄$array = oracleGetData('select * from table where id = 1')它將返回如下數據:

[] => Array 
(
    [Title] => Title 1 
    [Description] => Description 1 
) 

不僅我不確定如何引用(沒有任何標識數組),我還想以某種方式更改我的函數,所以如果它只返回一條記錄,它將只是一個簡單的一維數組。

我已經查看了通常的PHP數組函數,但找不到任何有用的信息,也沒有一種簡單的方法來確定數組的深度。

會很感激的任何幫助,謝謝

回答

4

使用array_pop()

$array = array_pop(oracleGetData('select * from table where id = 1')); 

然後,您將得到一個單一陣列:

Array 
(
    [Title] => Title 1 
    [Description] => Description 1 
) 

而是嵌入到另一個陣列:

Array 
(
    [] => Array 
    (
     [Title] => Title 1 
     [Description] => Description 1 
    ) 
} 
+0

這完美的作品,謝謝 - 將嘗試如果只有一條記錄,將其與一些代碼結合起來 – Nick

1

我認爲這是在腳本中的邏輯錯誤:

變化

$results[ $row[$id] ] = $row; 

$results[] = $row; 

的問題是,您希望將數據庫鍵值作爲數組鍵值,但您不知道數據庫密鑰,因爲您不知道查詢的樣子。

你可以嘗試:

$results[$row['id']] = $row; 

但是這隻能當你所有的結果都有一個數據庫鍵名爲「ID」。

+0

你會怎麼弄$ ID ??? – Venu

+0

函數參數。 –

+0

$ id在函數 – powtac

0

您傳遞的$ id在函數簽名中,但在循環中使用$ row [$ id],爲什麼?也許錯誤在那裏。

如果你想在你的結果集的序貫ID,你不需要使用$ ID,則可以使用array_push()函數

array_push($result, $row); 

OR

$results[] = $row;