2015-11-24 3 views
1

У меня есть большой фрагмент кода php, который создает выпадающее меню, и я хочу свести его к минимуму, загрузив опции выбора из текстового файла. Как это сделать правильно с php?Поместите список массивов в переменную php

Пример оригинального кода:

$field['options'] = array(
    array('value' => 'Anenii Noi', 'text' => 'Anenii Noi', 'depth' => 0), 
    array('value' => 'Bălţi', 'text' => 'Bălţi', 'depth' => 0), 
    array('value' => 'Basarabeasca', 'text' => 'Basarabeasca', 'depth' => 0), 
    .... 
    array('value' => 'Ungheni', 'text' => 'Ungheni', 'depth' => 0) 
); 

И это то, что я пытаюсь сделать, но без успеха:

// read a text file with select options 
// where each option is a seperate line 
$file_array = str_replace("\n","", file($file_path)); 

// build the list of arrays with select options 
foreach ($file_array as $location) 
    $options .= "array('value' => '" . $location . "', 'text' => '" . $location . "', 'depth' => 0),"; 

foreach($form['field'] as $k => $field) { 

    // replace the big list of arrays with $options variable 
    $field['options'] = array($options); 

    $form['field'][$k] = $field; 
    break; 
} 
+1

Вместо того, чтобы использовать текстовый файл (который я не рекомендую), вы можете просто положить все эти опции в отдельный файл PHP и включить его, когда вы нуждаетесь в них .. –

+0

@ Матей-Mihai мне нужно держать список опций как чистый текстовый файл, потому что я хочу использовать его в двух отдельных функциях, которые работают по-другому, и я не могу это изменить. Но, наверное, я должен об этом подумать. – Iurie

ответ

1

Похоже, у тебя было почти. Но вы пытались имитировать чистый PHP-код, который мог бы работать, если позже использовать eval(), но вам нужно подражать его функциям.

// read a text file with select options 
// where each option is a seperate line 
$file_array = str_replace("\n","", file($file_path)); 

// build the list of arrays with select options 
$options = array(); 
foreach ($file_array as $location) { 
    $options[] = array('value' => $location, 'text' => $location, 'depth' => 0); 
} 

foreach($form['field'] as $k => $field) { 

    $field['options'] = $options; 

    $form['field'][$k] = $field; 
    break; 
} 
+0

Я получил следующие уведомления: 'Примечание: неопределенный индекс: значение ...' и 'Примечание: неопределенный индекс: текст ...' – Iurie

+0

oh, '$ field ['options'] = array ($ options);' this line должно быть теперь '$ field ['options'] = $ options;' – user5542121

+0

Отлично! Это была проблема! Теперь код работает. Большое спасибо! – Iurie

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