【问题标题】:PHP merge array if emptyPHP合并数组如果为空
【发布时间】:2015-01-01 23:14:41
【问题描述】:

有没有一种在 PHP 中合并两个数组的好方法。

我的$defaults-array 包含默认值。如果$properties-array 包含一个空字符串,我想使用来自$defaults-array 的值。

到目前为止,我的代码如下所示:

    $defaults = array( 
        'src' => site_url() . '/facebook_share.png',
        'alt' => 'Facebook',
        'title' => 'Share',
        'misc' => '',
        );


    $properties = array( 
        'src' => '',
        'alt' => '',
        'title' => 'Facebook Share',
        'text' => 'FB Text', //further properties
        );

$arr = array_merge( $defaults, $properties);
var_dump($arr);

当前结果:

    $arr = array( 
        'src' => '',
        'alt' => '',
        'title' => 'Facebook Share',
        'text' => 'FB Text',
        'misc' => '',
        );

想要的结果:

    $arr = array( 
        'src' => site_url() . '/facebook_share.png',
        'alt' => 'Facebook',
        'title' => 'Facebook Share',
        'text' => 'FB Text',
        'misc' => '',
        );

希望有人能提供帮助。

【问题讨论】:

    标签: php arrays array-merge


    【解决方案1】:

    过滤掉空,然后合并:

    $arr = array_merge($defaults, array_filter($properties));
    

    请记住,array_filter 将过滤掉空字符串 ''0nullfalse 的元素。

    【讨论】:

      【解决方案2】:

      试试这个功能

      /**
        * @param {array} the properties array. transmitted by referance 
        * @param {array} the default array
        */
      function getTheBest(&$properties, $defaults) {
          $temp = $properties;
          foreach ($properties as $key => $value) {
              if(empty($properties[$key]) && array_key_exists($key, $defaults) && !empty($defaults[$key]) ) {
                  $properties[$key] = $defaults[$key];
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        • 2017-05-02
        • 2015-10-10
        • 2010-09-06
        • 1970-01-01
        相关资源
        最近更新 更多