从多维数组创建下拉列表

时间:2013-06-12 16:47:46

标签: php

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

编辑

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

数组([0] =&gt;数组([ID] =&gt; 25 [First_Name] =&gt; Maggy [Surname] =&gt; barrows [Company_Name] =&gt; squiggle [Telephone] =&gt; 12121212 [Alt_Telephone ] =&gt; 4343434 [注意] =&gt;))

4 个答案:

答案 0 :(得分: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;
}

尝试类似上面的内容,将“name”替换为您想要的值和标签的字段名称

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分: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;
}