数组助手(Array Helper)

Phalcon中提供了 Phalcon\Arr 数组助手类,让你更高效地处理数组。

获取值(Gets Value)

  1. <?php
  2.  
  3. $_GET['id'] = array(1, 2);
  4. $_GET['name'] = array('phalcon', 'phalcon7');
  5.  
  6. $value = \Phalcon\Arr::get($_GET, 'name'); // 值为数组 array('phalcon', 'phalcon7')
  7. $value = \Phalcon\Arr::first($_GET, 'name'); // 值为 phalcon
  8. $value = \Phalcon\Arr::path($_GET, array('id', 'name')); // 值为 array('id' => array(1, 2), 'name' => array('phalcon', 'phalcon7'))

方法的第一个参数是我们从哪里获取值,第二个参数指定了如何获取数据,第三个参数指定了如果不存在值的情况下返回的默认值。第二个参数可以是下述几种类型中的一个:

  • 数组键名或者欲从中取值的对象的属性名称
  • 数组键名或对象的属性名称数组
  • 回调函数
    用原生PHP从一个对象、数组、或者包含这两者的一个复杂数据结构中获取数据是非常繁琐的。你首先得使用isset 检查 key 是否存在, 然后如果存在你就获取它,如果不存在,则提供一个默认返回值,Phalcon 提供了一个非常方便的方法来做这件事:
  1. <?php
  2.  
  3. $data = array(
  4. 'username' => 'Dreamszhu',
  5. 'password' => '123456',
  6. 'address' => 'ZheJiang',
  7. 'foo' => array('bar' => 'Hello World'),
  8. 'theme' => array(
  9. 'one' => array('color' => 'green'),
  10. 'two' => array('color' => 'red', 'size' => 11)
  11. )
  12. );
  13.  
  14. $value = \Phalcon\Arr::get($data, 'sex', '男');

通过路径获取值(Gets Value)

  1. <?php
  2.  
  3. $value = \Phalcon\Arr::path($_GET, 'foo.bar.name');

方法的第一个参数是我们从哪里获取值,第二个参数指定了如何获取数据,第三个参数指定了如果不存在值的情况下返回的默认值,第四个参数指定了键名用什么分隔符,第二个参数可以是下述几种类型中的一个:

  • 数组键名
  • 以分隔符分割的数组键名,可以使用通配符(*)
  • 数组键名数组

对象转换为数组(Converts an object into an array)

你经常要将一个对象或者对象的数组转换成一个数组,如下代码可完成这个工作:

  1. <?php
  2.  
  3. $arr = \Phalcon\Arr::toArray($object);
  4.  
  5. $properties = array('id', 'name'); // 需要输出的字段
  6. $recursive = true; // 是否递归获取,如果属性是对象或者数组
  7. $negate = false;
  8. $arr = \Phalcon\Arr::toArray($object, $colums, $recursive, $negate);

下面的例子中展示了基本的使用方法:

  1. <?php
  2.  
  3. $data = array(
  4. 'username' => 'Dreamszhu',
  5. 'password' => '123456',
  6. 'address' => 'ZheJiang',
  7. 'foo' => array('bar' => 'Hello World'),
  8. 'theme' => array(
  9. 'one' => array('color' => 'green'),
  10. 'two' => array('color' => 'red', 'size' => 11)
  11. )
  12. );
  13.  
  14. \Phalcon\Arr::is_assoc($data);
  15.  
  16. // 判断是否是数组
  17. \Phalcon\Arr::is_array($data);
  18.  
  19. // Get the value of $data['foo']['bar']
  20. $value = \Phalcon\Arr::path($data, 'foo.bar');
  21.  
  22. $colors = \Phalcon\Arr::path($data, 'theme.*.color');
  23.  
  24. // Using an array of keys
  25. $colors = \Phalcon\Arr::path($data, array('theme', '*', 'color'));
  26.  
  27. // Set the values of "color" in theme
  28. \Phalcon\Arr::set_path($data, 'theme.*.color', 'blue');
  29. $colors = \Phalcon\Arr::path($data, array('theme', '*', 'color'));
  30.  
  31. // Append the values of "color" in theme
  32. \Phalcon\Arr::set_path($data, 'theme.*.color', 'red', NULL, true);
  33. $colors = \Phalcon\Arr::path($data, array('theme', '*', 'color'));
  34.  
  35. $values = \Phalcon\Arr::range(5, 20);
  36.  
  37. // Get the value "username", if it exists
  38. $username = \Phalcon\Arr::get($data, 'username');
  39.  
  40. $sex = \Phalcon\Arr::get($data, 'sex', 'No');
  41.  
  42. $info = \Phalcon\Arr::get($data, array('username', 'address'));
  43.  
  44. $sex = \Phalcon\Arr::choice($data, 'sex', 'one', 'two');
  45.  
  46. // Get the values "username", "password"
  47. $auth = \Phalcon\Arr::extract($data, array('username', 'password'));
  48.  
  49. $data = array(
  50. array('id' => 1, 'name' => 'Google'),
  51. array('id' => 2, 'name' => 'Baidu')
  52. );
  53.  
  54. // Get all of the "id" values from a result
  55. $ids = \Phalcon\Arr::pluck($data, 'id');

原文: http://www.myleftstudio.com/reference/arr.html