2013-06-12 3 views
0

У меня есть многомерный массив, созданный из запроса mysql. причем каждый индекс содержит массив, содержащий информацию о клиенте. Я хочу создать выпадающий список из этого значения с идентификатором клиента, а текст - именем клиента, но я не знаю, как получить доступ к массивам внутри основного массива.создать выпадающий список из многомерного массива

У меня есть следующая функция, которую я использовал для создания других выпадающих списков из одиночных массивов, но когда я пытаюсь использовать его с многомерным массивом, все, что он возвращает, это номера индексов. (Я получить список 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

его 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] => Array ([ID] => 25 [First_Name] => Магги [Фамилия] => курганы [Company_Name ] => закорючка [Телефон] => 12121212 [Alt_Telephone] => 4343434 [примечания] =>))

+0

Что такое ваш массив? – Mooseman

+0

Выглядит хорошо ... просто верните $ dropDown вместо html – Orangepill

+0

Можете ли вы разместить часть массива? Сколько уровней он достигает? – JonnyS

ответ

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

Попробуйте что-то вроде выше replaceing "имя" с именем поля, что вы хотите для значения и этикеткой

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

Поскольку вы имеете дело с 2-мерным массивом, или другими словами, один массив, вложенный в другой, вы должны запустить еще один цикл Еогеасп так:

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

я не уверен, что фактические показатели в пределах вашего вложенного массива, так что вы, возможно, придется настроить приведенный выше код немного. Удачи!

Смежные вопросы