从多维数组创建下拉列表

I have a multi dimensional array created from a mysql query. with each index holding an array containing customer information. I want to create a drop down list from this with the value being customer ID and the text being customer name but I don't know how to access the arrays inside the main array.

I have the following function which I used to create other drop down lists from single arrays but when I try to use it with a multi dimensional array all it returns is the index numbers. (i get a list of 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

its 2 dimensional, an array holding arrays of customer details. my query is ran on a different page so I save the results into a session variable with this.

$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($array) gives me the following:

Array ( [0] => Array ( [ID] => 25 [First_Name] => Maggy [Surname] => barrows [Company_Name] => squiggle [Telephone] => 12121212 [Alt_Telephone] => 4343434 [notes] => ) )

Like that:

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;
}
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;
}

Try something like the above replaceing "name" with the field name of what you want for the value and label

In your foreach, the $option => $value might be easier to understand as $key => $option. The $key is the index of the option, and the $option is the value you set.

If $value is a single-dimension array, you can just access its values by their indices ($option['id'] and $option['name'], for example).

If your options are single-dimensional, you can just access them with something like:

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

Since you are dealing with a 2 dimensional array, or in other words one array nested within another you have to run another foreach loop like this:

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;
}

I'm not sure what your actual indexes within your nested array are, so you may have to tweak the above code a little bit. Good luck!