2013-06-12 123 views
0

我有一個從mysql查詢創建的多維數組。每個索引都包含一個包含客戶信息的數組。我想創建一個下拉列表,其中值是客戶ID,文本是客戶名稱,但我不知道如何訪問主數組內的數組。從多維數組創建一個下拉列表

我有下面的函數,我用它來創建單個數組的其他下拉列表,但是當我嘗試將它用於多維數組時,它返回的是索引號。 (我得到的0,1,2,3的列表)

function createDropDown($name = '', $options = array()) { 
$dropDown = '<select name="'.$name.'">'; 
foreach ($options as $option => $value) { 
    $dropDown .= '<option value='.$value.'>'.$option.'</option>'; 
} 
$dropDown .= '</select>'; 
return $dropDown; 
} 

EDIT

其2維的,陣列保持的客戶詳情陣列。 我的查詢運行在不同的頁面上,所以我將結果保存到會話變量中。

$searchtext = $_POST['searchDB']; 
    $query = "SELECT * FROM customer WHERE First_Name LIKE '%$searchtext%'"; 
    $data = mysql_query($query) or die(mysql_error()); 

    $Customers = array(); 
    while($row = mysql_fetch_assoc($data)){ 

    $Customers[] = $row; 
     } 

    $anymatches = mysql_num_rows($data); 

     if ($anymatches != 0) { 
       $_SESSION['names']=$Customers; 
    } 

的print_r($陣列)使我有以下內容:

陣列([0] =>數組([ID] => 25 [FIRST_NAME] =>瑪吉[姓氏] =>公豬[COMPANY_NAME ] =>波浪線[聯繫電話] => 12121212 [Alt_Telephone] => 4343434 [註釋] =>))

+0

什麼是你的陣列? – Mooseman

+0

看起來不錯...只需返回$ dropDown而不是html – Orangepill

+0

你可以發佈數組的一部分嗎?它有多深層次? – JonnyS

回答

0

就像是:

function createDropDown($name = '', $options = array()) { 
$dropDown = '<select name="'.$name.'">'; 
foreach ($options as $option => $value) { 
    $dropDown .= '<option value='.$value['ID'].'>'.$value['First_Name'].' '.$value['Surname'].'</option>'; 
} 
$dropDown .= '</select>'; 
return $dropDown; 
} 
0
function createDropDown($name = '', $options = array()) { 
    $dropDown = '<select name="'.$name.'">'; 
    foreach ($options as $option) { 
     $dropDown .= '<option value="'.$option["name"].'">'.$option["name"].'</option>'; 
    } 
    $dropDown .= '</select>'; 
    return $dropDown; 
} 

試着像上面保換 「名」 與你想要的值字段名和標籤

0

In您的foreach$option => $value可能更容易理解爲$key => $option$key是該選項的index,而$option是您設置的值。

如果$value是一維數組,您可以通過索引訪問其值(例如,$option['id']$option['name'])。

如果你的選擇是一維的,你可以用類似訪問它們:

foreach($options as $option) { 
    $dropDown .= '<option value="' . $option['id'] . '">' . $option['name'] . '</option>'; 
} 
0

既然你正在處理一個2維數組,或者換句話說,嵌套在另一個你有一個數組運行另一個foreach循環是這樣的:

function createDropDown($name = '', $options = array()) { 
$dropDown = '<select name="'.$name.'">'; 
foreach ($options as $customer) { 
    foreach($customer as $info) { 
     $dropDown .= '<option value='.$info["id"].'>'.$info["name"].'</option>'; 
    } 
} 
$dropDown .= '</select>'; 
return $html; 
} 

我不知道你的嵌套陣列中的實際指標是什麼,所以你可能需要調整上面的代碼一點點。祝你好運!