配置记忆体给一个阵列 (array).
语法:
mixed *allocate( int size );
用法:
配置记忆体给一个有 size 个元素 (element) 的阵列.元素的数目必须大於 0, 而且不可以超过系统设定的上限(通常约 10000 左右) . 所有元素的初始值 (initialized)均为 0.
参考:
sizeof(),allocate_mapping()
翻译:Spock @ FF 96.Oct.12. (printed 3/16/95)
看一个给定的变数是否为阵列 (array).
语法:
int arrayp( mixed arg );
说明:
如果 arg 是一个阵列, 就传回 1
传回一个过滤旧阵列内容的新阵列.
语法:
mixed *filter_array( mixed *arr, string fun, object ob,mixed extra, ... );
mixed *filter_array( mixed *arr, function f,mixed extra, ... );
用法:
filter_array() 传回一个阵列, 这个阵列里保留 arr 经过物件 ob 中的函式 fun 过滤之後的结果.
每一个在阵列 arr中的元素 (element) 会呼叫函式 fun 一次, 并且当成 fun的参数 (parameter).
如果指定参数 extra 与之後的参数,则在每一次呼叫函式 fun 时当成第二、第三个参数....一个物件在 fun 传回 1 之後, 才视为成功地通过 fun 的过滤(之後物件也包含在传回的阵列中).
在第二种语法中, 如果指定的参数是函式 f, 就与第一种语法中的 ob->fun() 的用法相同. 如果 arr 不是一个阵列, filter_array() 传回 0.
参考:
sort_array(),map_array()
翻译:Spock @ FF 97.Feb.12. (printed 3/16/95)
经由一个函式修改一个阵列的元素 (element)
语法:
mixed *map_array( mixed *arr, string fun, object ob,mixed extra, ... );
mixed *map_array( mixed *arr, function f, mixed extra,... );
用法:
经由 ob->fun() 或 f 处理每一个 arr 中的元素之後,传回一个新的阵列. 每一个 arr 中的元素会当成指定函式的参数并呼叫一次指定的函式. 参数 extra 会在每次呼叫函式时当成第二个以後的参数. 原则上函式的运作如下:
foreach (index) arr[index] = ob->fun(arr[index],extra);
ob->fun( arr[.index.], extra ) 传回的值会替换掉阵列中的元素. 如果 arr 不是一个阵列, 则 map_array() 传回 0.
参考:
filter_array(),sort_array(),map()
翻译:Spock @ FF 97.Feb.18. (printed 3/16/95)
在一个阵列 (array) 或字串 (string) 中找寻指定的项目 (item) , 并传回此项目为第几项的索引.
语法:
int member_array( mixed item, mixed * | string arr, void |int start );
用法:
传回 item 在阵列 arr 中第一次出现时, 出现在第几项. 如果使用 start 参数, 则从 start 指定的第几项之後找起. 如果找不到 item, 则传回 -1.
翻译:Spock @ FF 97.Apr.15. (printed 3/16/95)
判断指定的变数是否为一个阵列 (array).
语法:
int pointerp( mixed arg );
说明:
如果 arg 是一个阵列, 则传回 1
排序一个阵列
语法:
mixed *sort_array( mixed *arr, string fun, object ob );
mixed *sort_array( mixed *arr, function f );
mixed *sort_array( mixed *arr, int direction );
用法:
第一种格式返回一个和参数 "arr" 内元素相同的阵列,元素的顺序按攀升的顺序排列,这个顺序依据阵列内每两个元素分别作为参数呼叫物件 ob 内的函数 fun 的返回值来决定,返回值 -1, 0, 或者 1,来说明这两个元素的关系是 小于,等于,或者 大于。
第二种格式同第一种功能相同,只是用函数指标代替。
第三种格式返回一个和参数 "arr" 内元素相同的阵列,阵列内元素的顺序由第二个参数 "direction" 来决定,0 或者 1 会按照升序排列,如果是 -1 会按照降序排列。而元素之间的大小关系是由内建的程序来比较,但是内建的比较程序有一个局限,它要求阵列必须是同类的,也就是阵列内的元素类型必须相同,类型只能是字符串,整数,浮点数中的一种。如果阵列内包含阵列,它只会比较子阵列的第一个元素。
参考:
filter_array(),map_array(),strcmp()
翻译:发现号(Find@tx)
将一个物件阵列分组.
语法:
mixed unique_array( object *obarr, string separator,void | mixed skip );
mixed unique_array( mixed *arr, function f,void | mixed skip );
用法:
unique_array() 将函式 separator 传回同值的物件分为同组. obarr 只能是一个物件阵列, 其他资料型态则予以忽视. 在 obarr 中的每一个物件各会呼叫函式 separator一次. 如果指定参数 skip, 会先过滤掉符合 skip 的物件元素.而第二种语法的作用略有不同. 阵列中的每一个元素将依次作为 f 的参数, 元素仍依照 f 的传回值分类. 但是阵列不限定为物件型态.传回值:传回的值是含有多个阵列的阵列, 格式如下:
({({第一组:1, 第一组:2, .... 第一组:N }),({第二组:1, 第二组:2, .... 第二组:N }),({第三组:1, 第三组:2, .... 第三组:N }),....({第 N 组:1, 第 N 组:2, .... 第 M 组:N }),})
翻译:Spock @ FF 97.jul.25. (printed 3/16/95)