PHP数组合并输出2 /数组

时间:2015-03-27 00:34:20

标签: php arrays multidimensional-array array-merge

我有一些问题,但是我从来没有得到过关于它的好消息。

我有一些回复良好的功能,但问题是打印x2我的查询。

我尽量减少我的脚本以快速获得帮助。

关于array_merge。

首先

  1. 验证功能
  2. function Verify($params) {
        $query = mysql_query("SELECT SOMETHING");
        if ($query->num_rows > 0) {
            $row = $query->fetch_assoc();
            // Here will pass 2 array on each function to proceed
            $data = self::CacheData($row['gid'], $params['sid']);
            $data['data'] = self::Host($row['gid'], $params['sid']);
            return $tmpdata;
        }
        return false;
    }
    
    1. 创建ChacheData和主机功能。
    2. static function CacheData($gid, $sid){
          $cachedata = array();
              $querycache = mysql_query("SELECT WHAT I NEED");
              if ($querycache->num_rows == 1) {
                  $rowcache = $querycache->fetch_assoc();
                  // Send to Files the array and check if is true
                  if (self::Files(array('gid' => $gid, 'sid' => $sid, 'expirecache' => 0)) == true) {
                      return array('gid' => $gid, 'size' => 0, 'enabled' => $rowcache['enabled'], 'exists' => false);
                  }
              }
      }
      
      function Host($gid, $sid) {
          $query = mysq_query("SELECT WHAT I NEED");
          if ($query->num_rows == 0) {
                  return false;
          }
          $rowgame = $query->fetch_assoc();
          // Send to Files the array and to see if is / false
          if (self::Files(array('gid' => $gid, 'sid' => $sid)) == false) {
              return false;
          }
      }
      

      好的,这是我遇到的问题

      当文件恢复2阵列时,它正在工作,但是我将所有数组通过其他函数发送到array_merge所有。

      所以问题的最后一个功能是这样的

      function Files(array $params) {
              $default = array('skipcache' => false, 'expirecache' => 86400, 'os' => null);
              $params = array_merge($default, $params);
              //return $params;
              print_r($params);
      }
      

      现在输出就像

      array(5) {
           ["skipcache"]=>
           bool(false)
           ["expirecache"]=>
           string(1) "0"
           ["os"]=>
           NULL
           ["gid"]=>
           string(1) "1"
           ["sid"]=>
           string(1) "1"
      }
      array(5) {
           ["skipcache"]=>
           bool(false)
           ["expirecache"]=>
           int(86400)
           ["os"]=>
           NULL
           ["gid"]=>
           string(1) "2"
           ["sid"]=>
           string(1) "1"
      }
      

      基于此输出我添加数据库,但问题是在数据库上添加2,我需要1个数组而不是2。

      所以我看到array_merge删除了dublicates但是在这里我看到它的相同但是没有删除因为$ params recive 2 array!

      你可以给我一些解决方案,但不能使用Foreach!

      非常感谢你!

      此致

1 个答案:

答案 0 :(得分:0)

您可以尝试:

$uniqueArr = array_merge(array_flip(array_flip($mergedArray))); 

$uniqueArr = array_keys(array_flip($mergedArray)); 

或者如果你想使用array_unique方法:

$uniqueArr = array_unique(array_merge($array1,$array2), SORT_REGULAR);

来自此链接http://php.net/manual/en/function.array-unique.php,它比array_unique方法快得多。你可以使用array_flip,因此你可以将键作为值,反之亦然。