用于下拉列表的数组中的php重复键

时间:2013-04-09 11:51:01

标签: php arrays drop-down-menu

我需要在下拉列表中显示mysql表中的重复值。 我无法做到这一点,因为数组不能有重复的键。 但我发现了一个可以重复键的功能。

我需要某人的帮助,他可以指导我将下拉列表值放入此功能:

下拉列表:

$dc=mysql_query("SELECT * FROM ECR_CBDC WHERE Prod_desc='$product' AND Ac_code='$custcode' AND Ecr_No=0 AND usr='$user' AND Cylno!='' ORDER BY Cylno ASC");
$num_rows = mysql_num_rows($dc);
$fill_from_array = array(); /* as "value"=>"option" */
for($i = 1; $i <= $num_rows; $i++)
{
$row = mysql_fetch_array($dc);
$fill_from_array[$row['Cylno']] = $row['Cylno'];
}

具有重复键的功能:

<?php
function array_combine_($keys, $values)
{
$result = array();
foreach ($keys as $i => $k) {
$result[$k][] = $values[$i];
}
array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;'));
return    $result;
}

print_r(array_combine_(Array('2','2','3'), Array(2,2,3)));
?>

表ECR_CBDC具有以下Cylno列的值:     10     20     20     三十     40     50     50

当我将上述值放入数组 - fill_from_array时,值将如下:

10 => 10 
20 => 20 
30 => 30 
40 => 40 
50 => 50 

我在阵列中需要的是:

10 => 10 
20 => 20 
20 => 20 
30 => 30 
40 => 40 
50 => 50 
50 => 50

2 个答案:

答案 0 :(得分:0)

只使用你的sql查询来获取重复的记录。

SELECT * FROM ECR_CBDC WHERE Prod_desc='$product' AND Ac_code='$custcode' AND Ecr_No=0 AND usr='$user' AND Cylno!='' Having count(Cylno) > 1 ORDER BY Cylno ASC

答案 1 :(得分:0)

我建议使用其他方式

function array_combine($array, $key, $value)
{
     $array[] = array('key' => $key, 'value' => $value);
     return $array;
}

function array_combine(Array $keys, Array $values)
{
    $array = [];
    foreach($keys as $i => $key)
    {
        $array[] = array('key' => $key, 'value' => $values[$i]);
    }
    return $array;
}

最后你的数组看起来像

0 => [key] 2 | [value] 2
1 => [key] 2 | [value] 2
2 => [key] 3 | [value] 3

当您在SQl上执行选择时,它将返回一个类似

的数组
[0] => [[field_1] => 10, [field_2] => 20],
[1] => [[field_1] => 10, [field_2] => 20],
[2] => [[field_1] => 10, [field_2] => 20],

然后你可以使用foreach

方法1,使用array_combine的第一种方法

$array = array(); // or [] for php 5.4+
foreach ( $results as $result)
{
    $array = array_combine($array, $result['field_1'], $result['field_2']);
}

要进行下拉菜单,请使用以下功能

function makeDropDown($array)
{
$options = '';
foreach($array as $value)
{
    $options .= '<option value="' . $value['key']  . '">' . $value['value']  . '</option>';
}
return $options;
}

你应该像

一样使用它
<select><?php echo makeDropDown($array); ?></select>