2015-08-03 3 views
0

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

$err = array('NAME'=>'', 'EMAIL'=>'', 'ADDR'=>'', 'CS_LOC'=>'', 'ZIP'=>'','PHONE'=>'', 'COMMENTS'=>'', 'FILE'=> ''); 

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

function clearFormErrors(&$ary) { // fill error array with empty strings 
    $keys = array_keys($ary); 
    $filled = array_fill_keys($keys, ''); 
    }   

не имеет большого значения [EDIT] :, но так как я буду называть это так или иначе, было бы неплохо, если бы какой-нибудь хороший «список пожеланий» способ, которым я мог бы просто определить массив ** КЛЮЧИ, когда я объявляю его **, как это ...

$err = array('NAME', 'EMAIL, 'ADDR', 'CS_LOC, 'ZIP,'PHONE', 'COMMENTS, 'FILE'); 

конечно выше не имеет, что желаемый эффект. Мне просто интересно, есть ли какая-то простая директива или метод, которые я пропустил в документах PHP, которые просто позволяют мне определять ключи (с или без какого-либо типа по умолчанию). Я уверен, что существует более сложная функция, которая может быть создана для создания нового массива с использованием ключей (теперь значений) из моего вышеприведенного массива «wishlist», но похоже, что он не сделает код короче или больше », красноречивый ", верно?

+0

Возможно, вы должны использовать собственную реализацию массива (интерфейс ArrayAccess: http://php.net/manual/en/class.arrayaccess.php) – pamelus

+0

Спасибо ... Я изучу его, чтобы узнать, что я могу там изучить , – Randy

ответ

3

Если у вас есть массив ключей, array_fill_keys - самый элегантный способ «сбросить» массив. Другой способ, который имеет смысл, - array_map, но для вашей простой задачи это кажется немного накладным.

+0

Я думал, что могу использовать array_fill_keys, если «ключи» были числовыми? В этом случае мои ключи представляют собой описательные текстовые строки. Теперь, если PHP дал мне что-то вроде C/C++ или перечислений Java, тогда ключи действительно могут быть числовыми, а ссылки поиска не должны быть строками, и это, вероятно, будет работать быстрее. Но это МНОГО "ifs". – Randy

+0

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

+0

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