配列操作†

8 個の関数。

ARRAYSIZE†

書式†

ARRAYSIZE(var)

引数†

Parameter Description
var 簡易配列(文字列)または汎用配列

戻り値†

成功時:要素数 失敗時:0

解説†

簡易配列、もしくは汎用配列の要素数を返す。

使用例†

_array = ('さくら','まゆら','ねここ') // 汎用配列を代入
ARRAYSIZE( _array ) // 要素数「3」を出力

互換性†

関連項目†


ARRAYDEDUP†

書式†

ARRAYDEDUP(array)

引数†

Parameter Description
array 汎用配列

戻り値†

重複要素を排除した汎用配列を返す。

解説†

同じとみなした要素は最初のものが残る。結果の並びは元の順ではなく、ハッシュのキーと同じ順になる。

Tc600-3以降では、要素の一致と並び順はハッシュのキーと同じ規則になった。

型のそろった配列(整数だけ、実数だけ、文字列だけ)の結果は、それ以前と変わらない。

使用例†

ARRAYDEDUP((3, 1, 2, 1))                    // 1,2,3
ARRAYDEDUP((10, "9", 9, "a", 1.0, 1, "1"))  // 1.000000,9,10,a (Tc600-3以降)

互換性†

関連項目†


ASEARCH†

書式†

ASEARCH(key, array)

引数†

Parameter Description
key 検索するキー値(文字列)
array 汎用配列(簡易配列は使用不可)

戻り値†

成功時:最初に見つかった要素の順序番号(0始まり) 見つからない場合:-1

解説†

key と各要素を == と同じ規則で比べ、最初に一致した要素の位置を返す。

Tc600-3以降では、次の点が変わった。

使用例†

_array = ('さくら','まゆら','ねここ')
ASEARCH('まゆら', _array)  // 1 を出力

互換性†

関連項目†


ASEARCHEX†

書式†

ASEARCHEX(key, array)

引数†

Parameter Description
key 検索対象の文字列値
array 汎用配列(簡易配列は使用不可)

戻り値†

一致するすべての要素の順序番号(0始まり)を格納した汎用配列を返す。一致する要素がない場合は空の配列を返す。

解説†

汎用配列から、値が一致する要素をすべて検索する。

使用例†

_tea = ("鉄観音", "烏龍", "やぶきた", "烏龍", "ジャスミン")
ipod = ASEARCHEX("烏龍", _tea)
// ipod には (1,3) という汎用配列が格納される

互換性†

関連項目†


ASORT†

書式†

ASORT(option, array)

引数†

Parameter Description
option ソート動作をカンマ区切りで指定する文字列。比較型(string(デフォルト)・int・double・length)、順序(ascending(デフォルト)・descending)、大文字小文字の区別(case)、戻り値形式(index)を組み合わせて指定
array ソート対象の汎用配列(簡易配列は使用不可)

戻り値†

ソートされた汎用配列を返す。エラー時または入力配列が空の場合は空の配列を返す。index オプションを指定した場合は、ソート後の各要素の元の配列における位置を示す配列を返す。

解説†

option は、比較型・順序・戻り値形式の3種類をカンマ区切りで並べて指定する。

比較型ごとに、各要素を次の値に変換して比べる。要素の型は見ないので、整数と文字列が混ざった配列も、指定した比較型で並べる。

比較型 比べる値
string 要素を文字列にしたもの。辞書順に並べる。大文字小文字を区別しない(case を付けると区別する)
length 要素を文字列にしたものの長さ
int 要素を整数にしたもの
double 要素を実数にしたもの

string で大文字小文字を区別しないときは、"A" と "a" のように大文字小文字だけが違う要素は同じ値とみなす。

_a = ('b', 'A', 'c', 'B', 'a')
ASORT('string', _a)        // A,a,b,B,c (A と a、b と B の順は決まらない)
ASORT('string,case', _a)   // A,B,a,b,c

同じ値とみなされた要素どうしの順番は保証されない(元の配列の順を保つとは限らない)。

要素が配列やハッシュのとき(Tc600-3以降)†

要素が配列やハッシュ(値の入れ子)でも並べられる。比べる値は次のようになる。

返り値の要素は、配列やハッシュのまま(入れ子のまま)返る。

_v = PARSEJSON('[[3,1],[1,2],"b",[1,10],5]')
ASORT('string', _v)   // (1,10),(1,2),(3,1),5,"b"

文字列にして比べるので、(1,10) は (1,2) より前になる("1,10" と "1,2" の辞書順)。また int / double では配列やハッシュはすべて同じ値とみなされ、その順番は保証されない。ハッシュの特定のキーの値で並べたいときは、キーの値の配列を作って index オプションで並べ、その順に元の配列の要素を取り出す。

_list = PARSEJSON('[{"n":3,"s":"c"},{"n":1,"s":"a"},{"n":2,"s":"b"}]')
_keys = IARRAY()
foreach _list ; _e { _keys ,= _e["n"] }
_sorted = IARRAY()
foreach ASORT('int,index', _keys) ; _i { _sorted ,= _list[_i] }
// _sorted の "n" は 1,2,3 の順

使用例†

_array = ('BBBB','CCC','AA')
ASORT('string,ascending', _array)         // "AA,BBBB,CCC" を出力
ASORT('string,descending,length', _array) // "BBBB,CCC,AA" を出力

互換性†

関連項目†


SETDELIM†

書式†

SETDELIM( array , delim )

引数†

Parameter Description
array デリミタを設定する簡易配列変数
delim 設定するデリミタ文字列

戻り値†

なし

解説†

変数の標準デリミタ(簡易配列の区切り文字)を設定します。デフォルトのデリミタはカンマ(,)です。

注意: 両引数は関数に直接指定する必要があります。以下のような方法では正しく動作しません:

// 不正な使い方(動作しない)
_i = (var, "/")
SETDELIM(_i)
// 正しい使い方
SETDELIM(var, "/")

互換性†

関連項目†


GETDELIM†

書式†

GETDELIM( var )

引数†

Parameter Description
var デリミタを調べたい簡易配列変数

戻り値†

指定した変数に設定されているデリミタ文字列。

解説†

変数に設定されているデリミタ(簡易配列の区切り文字)を取得する関数。デフォルトのデリミタはカンマ(,)。

SETDELIMで変更されたデリミタを確認するために使用する。

互換性†

関連項目†


IARRAY†

書式†

IARRAY
IARRAY()

引数†

なし

戻り値†

空の汎用配列

解説†

空の汎用配列を返す。

主な用途は以下の2つ:

1. 配列の初期化

初期化せずに ,= で要素を追加すると、インデックス0に不要な空文字列要素が生成される。IARRAYで初期化することでこれを防ぐことができる。

2. 要素の削除

配列要素にIARRAYを代入することで、その要素を完全に削除し、後続の要素をシフトすることができる(空文字列を残さない)。空文字列を代入して消したつもりになると、要素の位置に空文字列が残り、要素数も減らない。ただし Tc603-1以降、その要素が配列やハッシュ(入れ子)のときは、削除されずに空の配列に置き換わる。入れ子の要素を削除するときは範囲指定で _a[1, 1] = IARRAY と書く。

要素を完全に削除すると、後ろの要素が前に詰められて位置が変わる。配列のインデックスの番号が変わってはいけない場合は、IARRAY を使わないこと。

使用例†

// 初期化なしの場合(望ましくない結果)
_myarray ,= "hoge"
_myarray ,= "hogehoge"
// 結果: ("","hoge","hogehoge")

// IARRAYで初期化した場合
_myarray = IARRAY
_myarray ,= "hoge"
_myarray ,= "hogehoge"
// 結果: ("hoge","hogehoge")

// 要素の削除
_myarray = ("hoge","hogehoge")
_myarray[0] = IARRAY
// 結果: ("hogehoge") — 要素が削除されてシフト

互換性†