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

编辑

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

$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) 给了我以下信息:

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

4

4 回答 4

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;
}
于 2013-06-12T17:21:35.817 回答
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;
}

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

于 2013-06-12T16:51:47.090 回答
0

在您的foreach中,$option => $value可能更容易理解为$key => $option$keyindex选项的,并且是$option您设置的值。

如果$value是一维数组,您可以通过它们的索引(例如$option['id']和)访问它的值。$option['name']

如果您的选项是一维的,您可以通过以下方式访问它们:

foreach($options as $option) {
    $dropDown .= '<option value="' . $option['id'] . '">' . $option['name'] . '</option>';
}
于 2013-06-12T16:56:16.530 回答
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;
}

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

于 2013-06-12T16:58:07.287 回答