【问题标题】:PHP Array Merge Output 2/arrayPHP数组合并输出2/数组
【发布时间】:2015-03-27 00:34:19
【问题描述】:

我有一些关于这个的问题,但我从来没有得到一个好的和word。

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

我尝试最小化我的脚本以快速获得帮助。

关于array_merge。

首先

  1. 验证函数
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 和主机函数。
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 all。

所以问题出在哪里的最后一个函数是这样的

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 删除了重复项,但在这里我看到所有内容都相同但不是删除,因为 $params 接收 2 个数组!

你能给我一些解决方案,但不是 Foreach !

非常感谢!

问候,

【问题讨论】:

  • 但是你的最终数组的值是不同的。你也可以发布你的预期输出吗?

标签: php arrays multidimensional-array array-merge


【解决方案1】:

你可以试试:

$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 将键作为值,反之亦然。

【讨论】:

  • 还是不行。输出不结合两个数组。我只想打印一个数组。 LIKE array(5) { ["skipcache"]=> bool(false) ["expirecache"]=> int(86400) ["os"]=> NULL ["gid"]=> string(1) "2" ["sid"]=> 字符串(1) "1" }
  • 似乎对我有用,请看这个小提琴:codepad.org/9MPUDCSi,我将nullboolean 值更改为empty string0,因为它会打印一个警告,即array_flip 只能翻转值带有字符串和整数类型
  • codepad.org/yvpi0Gsf ... 如果您看到的是输出 2 数组,但如果键相同,我只想输出 1 个数组
  • 您好,您的使用方法有误。因为这样你调用你的方法两次,而你只是转储你的数组两次,你可以使用一个类,这样你就可以将值存储在一个属性中,如果该属性为空,则只使用 empty 方法,否则它会将当前属性合并到您的新属性中,如下所示:codepad.org/qDEL5GNW 如果您开始使用 OOP 会更好,因为以这种方式编写代码更容易。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 2021-02-19
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多