| 状态 | 草稿 |
|---|---|
| Todo | Fill ending methods - verify unshift_assoc example - review to_object method |
| 官方最后更新时间 | 2009/01/27 04:14 |
Array 辅助函数用于转换数组。注意:为了方便使用,类名用 'arr' 替代 'array'。
'rotate' 旋转(顺时针转动)矩阵数字(2维空间),例如:把一个 2×3 数组转化成一个 3×2 数组.
2个参数:
实例:
// 请注意使用 print() 只是为了显示 $optical_discs = array ( 'CD' => array('700', '780'), 'DVD' => array('4700','650'), 'BD' => array('25000','405') ); print Kohana::debug($optical_discs); $optical_discs = arr::rotate($optical_discs, FALSE); print ('<br /><br />'); print Kohana::debug($optical_discs);
返回结果:
Array
(
[CD] => Array
(
[0] => 700
[1] => 780
)
[DVD] => Array
(
[0] => 4700
[1] => 650
)
[BD] => Array
(
[0] => 25000
[1] => 405
)
)
Array
(
[0] => Array
(
[CD] => 700
[DVD] => 4700
[BD] => 25000
)
[1] => Array
(
[CD] => 780
[DVD] => 650
[BD] => 405
)
)
'remove' 从数组中移除键(值)并且返回。
2个参数:
实例:
// 请注意使用 print() 只是为了显示 $optical_discs = array ( 'CD' => array('700', '780'), 'DVD' => array('4700','650'), 'BD' => array('25000','405') ); print Kohana::debug($optical_discs); $cd = arr::remove('CD', $optical_discs); print ('<br />'); print Kohana::debug($cd); print ('<br />'); print Kohana::debug($optical_discs);
返回结果:
Array
(
[CD] => Array
(
[0] => 700
[1] => 780
)
[DVD] => Array
(
[0] => 4700
[1] => 650
)
[BD] => Array
(
[0] => 25000
[1] => 405
)
)
Array
(
[0] => 700
[1] => 780
)
Array
(
[DVD] => Array
(
[0] => 4700
[1] => 650
)
[BD] => Array
(
[0] => 25000
[1] => 405
)
)
'extract' 从数值中抽取一个或多个键(值),如果所抽取的键(值)不在指定的数组里面则将在抽取数据里返回 NULL。
2个参数:
实例:
$optical_discs = array ( 'CD' => array('700', '780'), 'DVD' => array('4700','650'), 'BD' => array('25000','405') ); $optical_discs = arr::extract($optical_discs, 'DVD', 'Bluray'); echo Kohana::debug($optical_discs);
输出:
(array) Array
(
[DVD] => Array
(
[0] => 4700
[1] => 650
)
[Bluray] => //NULL
)
'binary_search' 对数组执行基本的二元搜索,默认下,返回在他在数组里所找到的键(值)。这里有四个参数:
实例:
$my_array = array('10', '20', '30', '50', '80'); echo arr::binary_search('50', $my_array); // 3 echo arr::binary_search('45', $my_array); // FALSE (not found) echo arr::binary_search('45', $my_array, TRUE); // 3 echo arr::binary_search('35', $my_array, TRUE); // 2
'range' 从一个数字开始计数,直到填满数组为止。
2个参数:
实例:
echo Kohana::debug(arr::range(17, 150));
输出:
(array) Array
(
[17] => 17
[34] => 34
[51] => 51
[68] => 68
[85] => 85
[102] => 102
[119] => 119
[136] => 136
)
仿 array_merge_recursive,但增加数字键(值)和取代关联键(值)代替了添加的所有键(值):
实例:
echo Kohana::debug(arr::merge(array('a', 'b'), array('c', 'd'), array('e' => array('f', 'g'))));
返回结果:
(array) Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[e] => Array
(
[0] => f
[1] => g
)
)
'overwrite' 从输入的数组里重写数组的键(值),注意:不存在的键(值)将不被添加:
实例:
$array1 = array('fruit1' => 'apple', 'fruit2' => 'mango', 'fruit3' => 'pineapple'); $array2 = array('fruit1' => 'strawberry', 'fruit4' => 'coconut'); print Kohana::debug(arr::overwrite($array1, $array2));
输出:
(array) Array
(
[fruit1] => strawberry
[fruit2] => mango
[fruit3] => pineapple
)
因为 php 没有这函数,所以才创建了 map_recursive($callback, array $array) 方法,并参考 array_walk_recursive 创建,但不是真实的递归:
$callback 一个有效的回调,应用到数组的每一个成员。$array array to map to实例 :
public function add($value){ return $value + 1; } echo Kohana::debug(arr::map_recursive(array($this, 'add'), array('a' => 1, 'b' => 2, 'c' => array(3, 4), 'd' => array('e' => 5))));
返回结果:
(array) Array
(
[a] => 2
[b] => 3
[c] => Array
(
[0] => 4
[1] => 5
)
[d] => Array
(
[e] => 6
)
)
因为 php 没有这函数,所以才创建了 unshift_assoc,它只是在关联数组里释放一个关联:
实例
$fruits = array('fruit1' => 'apple', 'fruit2' => 'mango', 'fruit3' => 'pineapple'); arr::unshift_assoc($fruits, 'fruit1', 'strawberry'); print Kohana::debug($fruits);
输出:
(array) Array
(
[fruit1] => strawberry
[fruit2] => mango
[fruit3] => pineapple
)
to_object(array $array, $class = 'stdClass') 转换数组为对象。此方法支持多维数组,其参数:
* **[array]** //$array// 需要转换的数组 * **[string]** //$class// 转换后的基类(默认为 'stdClass')
注意:对于一维数组使用:$object = (object) $array;
实例
$array = arr::to_object(array('test' => 13)) print $array ->test; print Kohana::debug($array);
输出
13 (object) stdClass Object ( [test] => 13 )