У меня есть простая функция, которая смотрит на входящий тип данных mySQL, а затем переводит ее в категорию «категория» (называемую семейством в этом коде), чтобы я мог применять значения по умолчанию на уровне категории. Во всяком случае, этот код отлично подходит для поиска целочисленных, символьных и текстовых категорий, но полностью терпит неудачу в категориях datetime и decimal. Я нахожусь на своем пути. Любая помощь будет принята с благодарностью:array_search действует непредсказуемо
public static function get_family_type ($col_type) {
$families = array (
'integer' => array ('integer', 'int', 'tinyint', 'mediumint', 'bigint'),
'fixed' => array ('decimal', 'numeric'),
'floating' => array ('float' , 'double'),
'character' => array ('char', 'varchar'),
'datetime' => array ('datetime' , 'timestamp'),
'time' => array ('time'),
'date' => array ('year'),
'text' => array ('tinytext', 'text', 'mediumtext' , 'longtext'),
'blob' => array ('blob','tinyblob','mediumblob','longblob')
);
// first get rid of any optional length parameterisation
list ($col_type) = explode ("(" , $col_type , 2);
foreach ($families as $family => $family_members) {
if (array_search ($col_type , $family_members , true)) {
return $family;
}
}
return "unknown $col_type";
}
примечанию резервного копирования заявление возврата на последней строке, а затем посмотреть на этом выходе из таблицы, я определил в другом месте в коде. изменение
[18-Jun-2012 17:39:24] Getting default for family of integer
[18-Jun-2012 17:39:24] Getting default for family of text
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of integer
[18-Jun-2012 17:39:24] Getting default for family of integer
[18-Jun-2012 17:39:24] Getting default for family of unknown decimal
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of unknown datetime
[18-Jun-2012 17:39:24] Getting default for family of floating
Почему это лучше, просто используйте in_array(), которые возвращают логическое значение самого себя? Разве это не будет потреблять меньше ресурсов? – DaneSoul
Фактически, in_array() - лучший способ сделать это. Но я пытался больше объяснить, почему он терпел неудачу в своей нынешней форме. – goat
Спасибо, ребята! Я думал о завтрашнем дне, прежде чем я прочитал это, и, наверное, вы оба подтвердили, что это лучшая техника. Благодаря Rambo я могу сделать это с любой из функций сейчас. – ken