ArrayHelper.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace addons\StarChain\common\helpers;
  3. use yii\helpers\BaseArrayHelper;
  4. /**
  5. * 数组助手类
  6. *
  7. * @package addons\StarChain\common\helpers
  8. */
  9. class ArrayHelper extends BaseArrayHelper
  10. {
  11. /**
  12. * 返回数组中经过测试成功的第一个元素
  13. * 1. 如果没有测试函数, 那么返回数组第一个元素
  14. * 2. 如果没有测试函数,也没有数组元素,则返回默认值
  15. * 3. 如果有测试函数,则返回第一个测试成功的元素
  16. * 4. 如果有测试函数,但是测试都是不通过,则返回默认值
  17. * @param array $array
  18. * @param callable|null $callback
  19. * @param mixed $default
  20. * @return mixed
  21. */
  22. public static function first($array, callable $callback = null, $default = null)
  23. {
  24. if (is_null($callback)) {
  25. if (empty($array)) {
  26. return value($default);
  27. }
  28. foreach ($array as $item) {
  29. return $item;
  30. }
  31. }
  32. foreach ($array as $key => $value) {
  33. if ($callback($value, $key)) {
  34. return $value;
  35. }
  36. }
  37. return value($default);
  38. }
  39. }