如果设置了数组键,是否有更简洁的方法来分配值?

时间:2015-09-04 04:35:11

标签: php

我认为以下是一个非常标准程序,每个人都在其任何应用程序中写了一百次:

$orderByColumnName = '';
if (isset($this->urlParams()['orderby']) {
    $orderByColumnName = $this->urlParams()['orderby']; 
}

$this->someSortingFunction($orderByColumnName);

我一直这么做很多次,我感到厌倦了。

某种类似全球的理解抑制错误是邪恶的
尽管代码可以写得如此简洁:

$this->someSortingFunction(@$this->urlParams()['orderby']);

三元速记true ?: false;在这种情况下很接近但没有用,因为条件上没有假定的isset检查。因此,我们仍然要写:

$orderByColumnName = !empty($this->urlParams()['orderby'])?$this->urlParams()['orderby']:'';

那你们究竟是怎么处理这种情况的呢? if一路走来?还有其他更智能的方式可以分享吗?

2 个答案:

答案 0 :(得分:1)

为什么不改变urlParams()方法的运作方式? PHP没有真正的方法重载,但你可以在方法中伪造它。

public function urlParam($param = null) {
  //lets assume $internal_array is 
  //your object's internal array sent through urlParam()
  if(is_null($param)) {
     return $internal_array;
  } else {
    return isset($internal_array[$param]) ? $internal_array[$param] : '';
  }
}

执行此操作可让您保持现有代码与$this->urlParams()['some_param']的使用兼容,同时使您能够将所有内容重构为$this->urlParams('some_param')

答案 1 :(得分:0)

这是一个单独的静态函数,如果数组中没有值,则返回 <cc1:CaptchaControl ID="CaptchaControl1" runat="server" CaptchaBackgroundNoise="None" CaptchaHeight="40" CaptchaLength="5" CaptchaLineNoise="None" CaptchaMaxTimeout="240" CaptchaMinTimeout="5" FontColor="111, 109, 85" Width="325px" CaptchaWidth="300" CssClass="textarea_captha" />

NULL

每次我们需要使用public static function value($key, $list, $default = NULL) { if (is_array($list)) { return array_key_exists($key, $list) ? $list[$key] : $default; } return $default; }

时都可以调用此方法
empty(), isset(), array_key_exists()