从多维数组创建下拉列表


create a drop down list from a multi dimensional array

我有一个从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;
}

编辑

它的二维,一个包含客户详细信息数组的数组。我的查询在不同的页面上运行,因此我将结果保存到会话变量中。

$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(给了我以下内容:

数组 ( [0] => 数组 ( [ID] => 25 [First_Name] => 玛吉 [姓氏] => 巴罗斯 [Company_Name] => 波浪线 [电话] => 12121212 [Alt_Telephone] => 4343434 [注释] => ( (

像那样:

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

尝试使用上述方法将"name"替换为所需的值和标签的字段名称

在你的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>';
}

由于您正在处理二维数组,或者换句话说,一个数组嵌套在另一个数组中,因此您必须运行另一个 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;
}

我不确定嵌套数组中的实际索引是什么,因此您可能需要稍微调整上面的代码。祝你好运!