2010年03月17日

配列をマージするのにarray_merge()と+とどっちを使ったらいいのかな?の件

2つの配列をマージするのに、array_merge()と配列演算子の+とどちらを使ったらよいのかよくわからなくなるのでメモしておきます。

array_merge()関数

配列をマージします。

$arr1 = array(1, 2, 3);
$arr2 = array(4, 5, 6);
$result = array_merge($arr1, $arr2);

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)


値が同じでも関係ない。

$arr1 = array(1, 2, 3);
$arr2 = array(1, 2, 3);
$result = array_merge($arr1, $arr2);

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 1
[4] => 2
[5] => 3
)


同じキーは上書きされる。後の配列で上書きされる。

$arr1 = array('a' => 1, 'b' => 2, 'c' => 3);
$arr2 = array('b' => 4, 'c' => 5, 'd' => 6);
$result = array_merge($arr1, $arr2);

Array
(
[a] => 1
[b] => 4
[c] => 5
[d] => 6
)


数値添字は振り直される。

$arr1 = array(1 => 1, 3 => 2, 5 => 3);
$arr2 = array(7 => 4, 9 => 5, 11 => 6);
$result = array_merge($arr1, $arr2);

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)


キーと数値添字が混ざっていても、数値添字は振り直される。

$arr1 = array(1 => 1, 'a' => 2, 5 => 3);
$arr2 = array('b' => 4, 9 => 5, 'c' => 6);
$result = array_merge($arr1, $arr2);

Array
(
[0] => 1
[a] => 2
[1] => 3
[b] => 4
[2] => 5
[c] => 6
)




配列演算子+

左にないキーを追加します。以下の場合数値添字0,1,2は左にあるので追加されません。

$arr1 = array(1, 2, 3);
$arr2 = array(4, 5, 6);
$result = $arr1 + $arr2;

Array
(
[0] => 1
[1] => 2
[2] => 3
)



値が同じでも関係ない。

$arr1 = array(1, 2, 3);
$arr2 = array(1, 2, 3);
$result = $arr1 + $arr2;

Array
(
[0] => 1
[1] => 2
[2] => 3
)


同じキーは上書きされないし、追加もされない。

$arr1 = array('a' => 1, 'b' => 2, 'c' => 3);
$arr2 = array('b' => 4, 'c' => 5, 'd' => 6);
$result = $arr1 + $arr2;

Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 6
)



数値添字でも左にければ追加される。

$arr1 = array(1 => 1, 3 => 2, 5 => 3);
$arr2 = array(7 => 4, 9 => 5, 11 => 6);
$result = $arr1 + $arr2;

Array
(
[1] => 1
[3] => 2
[5] => 3
[7] => 4
[9] => 5
[11] => 6
)


キーと数値添字が混ざっていても、左になければ追加される。

$arr1 = array(1 => 1, 'a' => 2, 5 => 3);
$arr2 = array('b' => 4, 9 => 5, 'c' => 6);
$result = $arr1 + $arr2;

Array
(
[1] => 1
[a] => 2
[5] => 3
[b] => 4
[9] => 5
[c] => 6
)






ちなみに。

これは?

$arr1 = array('001' => 1, 'a' => 2, '005' => 3);
$arr2 = array('b' => 4, '009' => 5, 'c' => 6);
$result = array_merge($arr1, $arr2);

Array
(
[001] => 1
[a] => 2
[005] => 3
[b] => 4
[009] => 5
[c] => 6
)



$arr1 = array('001' => 1, 'a' => 2, '005' => 3);
$arr2 = array('b' => 4, '009' => 5, 'c' => 6);
$result = $arr1 + $arr2;

Array
(
[001] => 1
[a] => 2
[005] => 3
[b] => 4
[009] => 5
[c] => 6
)



これは?

$arr1 = array(1.0 => 1, 'a' => 2, '005' => 3);
$arr2 = array('1' => 4, '009' => 5, 'c' => 6);
$result = array_merge($arr1, $arr2);

Array
(
[0] => 1
[a] => 2
[005] => 3
[1] => 4
[009] => 5
[c] => 6
)



$arr1 = array(1.0 => 1, 'a' => 2, '005' => 3);
$arr2 = array('1' => 4, '009' => 5, 'c' => 6);
$result = $arr1 + $arr2;

Array
(
[1] => 1
[a] => 2
[005] => 3
[009] => 5
[c] => 6
)


同じキーだったら上書きしないで、数値添字だったら振りなおして追加してくれる!っていうのはないのかしら?
posted by ほえ at 11:04| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2010年03月03日

データベースの全てのテーブルのカラムを取得する件

テーブルを作っている時についSQLのキーワードを使ってしまって、あら?みたいな事があるので。

SELECT DISTINCT column_name
FROM information_schema.columns
WHERE table_schema = 'public'
AND UPPER(column_name) IN (
'A',
'ABORT',
'ABS',
'ABSENT',
'ABSOLUTE',
'ACCESS',
'ACCORDING',
'ACTION',
'ADA',
'ADD',
'ADMIN',
'AFTER',
'AGGREGATE',
'ALIAS',
'ALL',
'ALLOCATE',
'ALSO',
'ALTER',
'ALWAYS',
'ANALYSE',
'ANALYZE',
'AND',
'ANY',
'ARE',
'ARRAY',
'ARRAY_AGG',
'AS',
'ASC',
'ASENSITIVE',
'ASSERTION',
'ASSIGNMENT',
'ASYMMETRIC',
'AT',
'ATOMIC',
'ATTRIBUTE',
'ATTRIBUTES',
'AUTHORIZATION',
'AVG',
'BACKWARD',
'BASE64',
'BEFORE',
'BEGIN',
'BERNOULLI',
'BETWEEN',
'BIGINT',
'BINARY',
'BIT',
'BITVAR',
'BIT_LENGTH',
'BLOB',
'BOM',
'BOOLEAN',
'BOTH',
'BREADTH',
'BY',
'C',
'CACHE',
'CALL',
'CALLED',
'CARDINALITY',
'CASCADE',
'CASCADED',
'CASE',
'CAST',
'CATALOG',
'CATALOG_NAME',
'CEIL',
'CEILING',
'CHAIN',
'CHAR',
'CHARACTER',
'CHARACTERISTICS',
'CHARACTERS',
'CHARACTER_LENGTH',
'CHARACTER_SET_CATALOG',
'CHARACTER_SET_NAME',
'CHARACTER_SET_SCHEMA',
'CHAR_LENGTH',
'CHECK',
'CHECKED',
'CHECKPOINT',
'CLASS',
'CLASS_ORIGIN',
'CLOB',
'CLOSE',
'CLUSTER',
'COALESCE',
'COBOL',
'COLLATE',
'COLLATION',
'COLLATION_CATALOG',
'COLLATION_NAME',
'COLLATION_SCHEMA',
'COLLECT',
'COLUMN',
'COLUMNS',
'COLUMN_NAME',
'COMMAND_FUNCTION',
'COMMAND_FUNCTION_CODE',
'COMMENT',
'COMMIT',
'COMMITTED',
'COMPLETION',
'CONCURRENTLY',
'CONDITION',
'CONDITION_NUMBER',
'CONFIGURATION',
'CONNECT',
'CONNECTION',
'CONNECTION_NAME',
'CONSTRAINT',
'CONSTRAINTS',
'CONSTRAINT_CATALOG',
'CONSTRAINT_NAME',
'CONSTRAINT_SCHEMA',
'CONSTRUCTOR',
'CONTAINS',
'CONTENT',
'CONTINUE',
'CONVERSION',
'CONVERT',
'COPY',
'CORR',
'CORRESPONDING',
'COST',
'COUNT',
'COVAR_POP',
'COVAR_SAMP',
'CREATE',
'CREATEDB',
'CREATEROLE',
'CREATEUSER',
'CROSS',
'CSV',
'CUBE',
'CUME_DIST',
'CURRENT',
'CURRENT_CATALOG',
'CURRENT_DATE',
'CURRENT_DEFAULT_TRANSFORM_GROUP',
'CURRENT_PATH',
'CURRENT_ROLE',
'CURRENT_SCHEMA',
'CURRENT_TIME',
'CURRENT_TIMESTAMP',
'CURRENT_TRANSFORM_GROUP_FOR_TYPE',
'CURRENT_USER',
'CURSOR',
'CURSOR_NAME',
'CYCLE',
'DATA',
'DATABASE',
'DATE',
'DATETIME_INTERVAL_CODE',
'DATETIME_INTERVAL_PRECISION',
'DAY',
'DEALLOCATE',
'DEC',
'DECIMAL',
'DECLARE',
'DEFAULT',
'DEFAULTS',
'DEFERRABLE',
'DEFERRED',
'DEFINED',
'DEFINER',
'DEGREE',
'DELETE',
'DELIMITER',
'DELIMITERS',
'DENSE_RANK',
'DEPTH',
'DEREF',
'DERIVED',
'DESC',
'DESCRIBE',
'DESCRIPTOR',
'DESTROY',
'DESTRUCTOR',
'DETERMINISTIC',
'DIAGNOSTICS',
'DICTIONARY',
'DISABLE',
'DISCARD',
'DISCONNECT',
'DISPATCH',
'DISTINCT',
'DO',
'DOCUMENT',
'DOMAIN',
'DOUBLE',
'DROP',
'DYNAMIC',
'DYNAMIC_FUNCTION',
'DYNAMIC_FUNCTION_CODE',
'EACH',
'ELEMENT',
'ELSE',
'EMPTY',
'ENABLE',
'ENCODING',
'ENCRYPTED',
'END',
'END-EXEC',
'ENUM',
'EQUALS',
'ESCAPE',
'EVERY',
'EXCEPT',
'EXCEPTION',
'EXCLUDE',
'EXCLUDING',
'EXCLUSIVE',
'EXEC',
'EXECUTE',
'EXISTING',
'EXISTS',
'EXP',
'EXPLAIN',
'EXTERNAL',
'EXTRACT',
'FALSE',
'FAMILY',
'FETCH',
'FILTER',
'FINAL',
'FIRST',
'FIRST_VALUE',
'FLAG',
'FLOAT',
'FLOOR',
'FOLLOWING',
'FOR',
'FORCE',
'FOREIGN',
'FORTRAN',
'FORWARD',
'FOUND',
'FREE',
'FREEZE',
'FROM',
'FULL',
'FUNCTION',
'FUSION',
'G',
'GENERAL',
'GENERATED',
'GET',
'GLOBAL',
'GO',
'GOTO',
'GRANT',
'GRANTED',
'GREATEST',
'GROUP',
'GROUPING',
'HANDLER',
'HAVING',
'HEADER',
'HEX',
'HIERARCHY',
'HOLD',
'HOST',
'HOUR',
'ID',
'IDENTITY',
'IF',
'IGNORE',
'ILIKE',
'IMMEDIATE',
'IMMUTABLE',
'IMPLEMENTATION',
'IMPLICIT',
'IN',
'INCLUDING',
'INCREMENT',
'INDENT',
'INDEX',
'INDEXES',
'INDICATOR',
'INFIX',
'INHERIT',
'INHERITS',
'INITIALIZE',
'INITIALLY',
'INNER',
'INOUT',
'INPUT',
'INSENSITIVE',
'INSERT',
'INSTANCE',
'INSTANTIABLE',
'INSTEAD',
'INT',
'INTEGER',
'INTERSECT',
'INTERSECTION',
'INTERVAL',
'INTO',
'INVOKER',
'IS',
'ISNULL',
'ISOLATION',
'ITERATE',
'JOIN',
'K',
'KEY',
'KEY_MEMBER',
'KEY_TYPE',
'LAG',
'LANCOMPILER',
'LANGUAGE',
'LARGE',
'LAST',
'LAST_VALUE',
'LATERAL',
'LC_COLLATE',
'LC_CTYPE',
'LEAD',
'LEADING',
'LEAST',
'LEFT',
'LENGTH',
'LESS',
'LEVEL',
'LIKE',
'LIKE_REGEX',
'LIMIT',
'LISTEN',
'LN',
'LOAD',
'LOCAL',
'LOCALTIME',
'LOCALTIMESTAMP',
'LOCATION',
'LOCATOR',
'LOCK',
'LOGIN',
'LOWER',
'M',
'MAP',
'MAPPING',
'MATCH',
'MATCHED',
'MAX',
'MAXVALUE',
'MAX_CARDINALITY',
'MEMBER',
'MERGE',
'MESSAGE_LENGTH',
'MESSAGE_OCTET_LENGTH',
'MESSAGE_TEXT',
'METHOD',
'MIN',
'MINUTE',
'MINVALUE',
'MOD',
'MODE',
'MODIFIES',
'MODIFY',
'MODULE',
'MONTH',
'MORE',
'MOVE',
'MULTISET',
'MUMPS',
'NAME',
'NAMES',
'NAMESPACE',
'NATIONAL',
'NATURAL',
'NCHAR',
'NCLOB',
'NESTING',
'NEW',
'NEXT',
'NFC',
'NFD',
'NFKC',
'NFKD',
'NIL',
'NO',
'NOCREATEDB',
'NOCREATEROLE',
'NOCREATEUSER',
'NOINHERIT',
'NOLOGIN',
'NONE',
'NORMALIZE',
'NORMALIZED',
'NOSUPERUSER',
'NOT',
'NOTHING',
'NOTIFY',
'NOTNULL',
'NOWAIT',
'NTH_VALUE',
'NTILE',
'NULL',
'NULLABLE',
'NULLIF',
'NULLS',
'NUMBER',
'NUMERIC',
'OBJECT',
'OCCURRENCES_REGEX',
'OCTETS',
'OCTET_LENGTH',
'OF',
'OFF',
'OFFSET',
'OIDS',
'OLD',
'ON',
'ONLY',
'OPEN',
'OPERATION',
'OPERATOR',
'OPTION',
'OPTIONS',
'OR',
'ORDER',
'ORDERING',
'ORDINALITY',
'OTHERS',
'OUT',
'OUTER',
'OUTPUT',
'OVER',
'OVERLAPS',
'OVERLAY',
'OVERRIDING',
'OWNED',
'OWNER',
'P',
'PAD',
'PARAMETER',
'PARAMETERS',
'PARAMETER_MODE',
'PARAMETER_NAME',
'PARAMETER_ORDINAL_POSITION',
'PARAMETER_SPECIFIC_CATALOG',
'PARAMETER_SPECIFIC_NAME',
'PARAMETER_SPECIFIC_SCHEMA',
'PARSER',
'PARTIAL',
'PARTITION',
'PASCAL',
'PASSING',
'PASSWORD',
'PATH',
'PERCENTILE_CONT',
'PERCENTILE_DISC',
'PERCENT_RANK',
'PLACING',
'PLANS',
'PLI',
'POSITION',
'POSITION_REGEX',
'POSTFIX',
'POWER',
'PRECEDING',
'PRECISION',
'PREFIX',
'PREORDER',
'PREPARE',
'PREPARED',
'PRESERVE',
'PRIMARY',
'PRIOR',
'PRIVILEGES',
'PROCEDURAL',
'PROCEDURE',
'PUBLIC',
'QUOTE',
'RANGE',
'RANK',
'READ',
'READS',
'REAL',
'REASSIGN',
'RECHECK',
'RECURSIVE',
'REF',
'REFERENCES',
'REFERENCING',
'REGR_AVGX',
'REGR_AVGY',
'REGR_COUNT',
'REGR_INTERCEPT',
'REGR_R2',
'REGR_SLOPE',
'REGR_SXX',
'REGR_SXY',
'REGR_SYY',
'REINDEX',
'RELATIVE',
'RELEASE',
'RENAME',
'REPEATABLE',
'REPLACE',
'REPLICA',
'RESET',
'RESPECT',
'RESTART',
'RESTRICT',
'RESULT',
'RETURN',
'RETURNED_CARDINALITY',
'RETURNED_LENGTH',
'RETURNED_OCTET_LENGTH',
'RETURNED_SQLSTATE',
'RETURNING',
'RETURNS',
'REVOKE',
'RIGHT',
'ROLE',
'ROLLBACK',
'ROLLUP',
'ROUTINE',
'ROUTINE_CATALOG',
'ROUTINE_NAME',
'ROUTINE_SCHEMA',
'ROW',
'ROWS',
'ROW_COUNT',
'ROW_NUMBER',
'RULE',
'SAVEPOINT',
'SCALE',
'SCHEMA',
'SCHEMA_NAME',
'SCOPE',
'SCOPE_CATALOG',
'SCOPE_NAME',
'SCOPE_SCHEMA',
'SCROLL',
'SEARCH',
'SECOND',
'SECTION',
'SECURITY',
'SELECT',
'SELF',
'SENSITIVE',
'SEQUENCE',
'SERIALIZABLE',
'SERVER',
'SERVER_NAME',
'SESSION',
'SESSION_USER',
'SET',
'SETOF',
'SETS',
'SHARE',
'SHOW',
'SIMILAR',
'SIMPLE',
'SIZE',
'SMALLINT',
'SOME',
'SOURCE',
'SPACE',
'SPECIFIC',
'SPECIFICTYPE',
'SPECIFIC_NAME',
'SQL',
'SQLCODE',
'SQLERROR',
'SQLEXCEPTION',
'SQLSTATE',
'SQLWARNING',
'SQRT',
'STABLE',
'STANDALONE',
'START',
'STATE',
'STATEMENT',
'STATIC',
'STATISTICS',
'STDDEV_POP',
'STDDEV_SAMP',
'STDIN',
'STDOUT',
'STORAGE',
'STRICT',
'STRIP',
'STRUCTURE',
'STYLE',
'SUBCLASS_ORIGIN',
'SUBLIST',
'SUBMULTISET',
'SUBSTRING',
'SUBSTRING_REGEX',
'SUM',
'SUPERUSER',
'SYMMETRIC',
'SYSID',
'SYSTEM',
'SYSTEM_USER',
'T',
'TABLE',
'TABLESAMPLE',
'TABLESPACE',
'TABLE_NAME',
'TEMP',
'TEMPLATE',
'TEMPORARY',
'TERMINATE',
'TEXT',
'THAN',
'THEN',
'TIES',
'TIME',
'TIMESTAMP',
'TIMEZONE_HOUR',
'TIMEZONE_MINUTE',
'TO',
'TOP_LEVEL_COUNT',
'TRAILING',
'TRANSACTION',
'TRANSACTIONS_COMMITTED',
'TRANSACTIONS_ROLLED_BACK',
'TRANSACTION_ACTIVE',
'TRANSFORM',
'TRANSFORMS',
'TRANSLATE',
'TRANSLATE_REGEX',
'TRANSLATION',
'TREAT',
'TRIGGER',
'TRIGGER_CATALOG',
'TRIGGER_NAME',
'TRIGGER_SCHEMA',
'TRIM',
'TRIM_ARRAY',
'TRUE',
'TRUNCATE',
'TRUSTED',
'TYPE',
'UESCAPE',
'UNBOUNDED',
'UNCOMMITTED',
'UNDER',
'UNENCRYPTED',
'UNION',
'UNIQUE',
'UNKNOWN',
'UNLISTEN',
'UNNAMED',
'UNNEST',
'UNTIL',
'UNTYPED',
'UPDATE',
'UPPER',
'URI',
'USAGE',
'USER',
'USER_DEFINED_TYPE_CATALOG',
'USER_DEFINED_TYPE_CODE',
'USER_DEFINED_TYPE_NAME',
'USER_DEFINED_TYPE_SCHEMA',
'USING',
'VACUUM',
'VALID',
'VALIDATOR',
'VALUE',
'VALUES',
'VARBINARY',
'VARCHAR',
'VARIABLE',
'VARIADIC',
'VARYING',
'VAR_POP',
'VAR_SAMP',
'VERBOSE',
'VERSION',
'VIEW',
'VOLATILE',
'WHEN',
'WHENEVER',
'WHERE',
'WHITESPACE',
'WIDTH_BUCKET',
'WINDOW',
'WITH',
'WITHIN',
'WITHOUT',
'WORK',
'WRAPPER',
'WRITE',
'XML',
'XMLAGG',
'XMLATTRIBUTES',
'XMLBINARY',
'XMLCAST',
'XMLCOMMENT',
'XMLCONCAT',
'XMLDECLARATION',
'XMLDOCUMENT',
'XMLELEMENT',
'XMLEXISTS',
'XMLFOREST',
'XMLITERATE',
'XMLNAMESPACES',
'XMLPARSE',
'XMLPI',
'XMLQUERY',
'XMLROOT',
'XMLSCHEMA',
'XMLSERIALIZE',
'XMLTABLE',
'XMLTEXT',
'XMLVALIDATE',
'YEAR',
'YES',
'ZONE'
)
ORDER BY column_name

これでいいかしら?長いけど。
IN の中のキーワードはPostgreSQLのマニュアルから。
http://www.postgresql.jp/document/current/html/sql-keywords-appendix.html
posted by ほえ at 18:01| Comment(0) | TrackBack(0) | PostgreSQL | このブログの読者になる | 更新情報をチェックする

2010年03月02日

_gvimrcをutf-8で書くと怒られるの件

gvimで_gvimrcを編集して保存、:so ~/_gvimrcすると、「なんか間違ってる!」とエラーになって読み込んでくれません。
なんだろうと思ってみてみたら、utf-8で保存すると怒られるみたい。
sjisにすると問題ない。
なんで?と思うわけですがフォントの指定が日本語でした

set guifont=MS_ゴシック:h10:cSHIFTJIS

みたいな。
フォント名を英語で指定すれば問題ないみたい!
http://sites.google.com/site/fudist/Home/vim-nihongo-ban/sample-cfg

で問題はフォントの英語名は何?という事でちょっと調べてくらいではわかりませんでした。MS ゴシックはWikipediaで調べたら書いてありました。
http://ja.wikipedia.org/wiki/MS_%E3%82%B4%E3%82%B7%E3%83%83%E3%82%AF
で、先ほどお世話になったサイトによるとフォント名内のスペースはアンダーバーにすればよいのですね。\でエスケープしてもいいみたい。

他のはどうやって調べたらよいのかしら??
posted by ほえ at 19:34| Comment(3) | TrackBack(0) | vim | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。