들어오는 mySQL 데이터 유형을보고 범주 수준에서 기본값을 적용 할 수 있도록 "범주"(이 코드에서 패밀리라고 함)로 롤업하는 간단한 함수가 있습니다. 어쨌든이 코드는 정수, 문자 및 텍스트 범주를 찾는 데는 문제가 없지만 datetime 및 decimal 범주에서는 완전히 실패합니다. 나는 끝내 준다.array_search unexpected unexpectedly
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";
}
주에게 마지막 줄에 백업 return 문을 다음 내가 코드를 다른 곳에서 정의 한 테이블에서이 출력을 보면 : 어떤 도움을 크게 감상 할 수있다.
[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
고마워! 나는 이것을 읽기 전에 아침 식사에 대해 in_array에 대해 생각하고 있었고, 이것이 더 나은 기술이라는 것을 확인했습니다. 람보 덕분에 지금은 어느 기능으로도 할 수 있습니다. – ken