【问题标题】:splitting a large array into smaller arrays based on the key names根据键名将大数组拆分为较小的数组
【发布时间】:2011-01-02 12:14:53
【问题描述】:

我有一个数组,我需要根据 [location] 键将其拆分为更小的数组(所以我想要一个 .co.uk 数组和一个 .com 数组)。 [location] 键不限于 .co.uk 或 .com。

感谢任何帮助。

[22] => Array
    (
        [query] => tttt
        [location] => .co.uk
        [x] => 1292889600
        [y] => 1
        [fullurl] => http://www.tttt.com/
    )

[20] => Array
    (
        [query] => tttt
        [location] => .co.uk
        [x] => 1292976000
        [y] => 1
        [fullurl] => http://www.tttt.com/
    )

[21] => Array
    (
        [query] => tttt
        [location] => .com
        [x] => 1292976000
        [y] => 1
        [fullurl] => http://www.tttt.com/
    )

[19] => Array
    (
        [query] => tttt
        [location] => .co.uk
        [x] => 1293062400
        [y] => 1
        [fullurl] => http://www.tttt.com/
    )

[18] => Array
    (
        [query] => tttt
        [location] => .com
        [x] => 1293062400
        [y] => 1
        [fullurl] => http://www.tttt.com/
    )

[17] => Array
    (
        [query] => tttt
        [location] => .co.uk
        [x] => 1293148800
        [y] => 1
        [fullurl] => http://www.tttt.com/
    )

[16] => Array
    (
        [query] => tttt
        [location] => .com
        [x] => 1293148800
        [y] => 1
        [fullurl] => http://www.tttt.com/
    )

[14] => Array
    (
        [query] => tttt
        [location] => .com
        [x] => 1293235200
        [y] => 1
        [fullurl] => http://www.tttt.com/
    )

【问题讨论】:

    标签: php


    【解决方案1】:

    你可以这样做:

    $byLocation = array();
    foreach ($arr as $key => $item) {
        if (!isset($byLocation[$item['location']])) {
            $byLocation[$item['location']] = array();
        }
        $byLocation[$item['location']][$key] = $item;
    }
    

    然后例如$byLocation['.co.uk'][22] 是原始数组的第一项。如果您不想保留原始密钥,只需省略它并使用[] 代替。

    【讨论】:

    • 完美运行。不得不改变 $byLocation[$item['location']][$key] = $val;到 $byLocation[$item['location']][$key] = $item;不过。
    【解决方案2】:

    我原以为您只需要按如下方式迭代数组:

    1. 检查 $domains 数组中的当前“位置”是否已知 (array_key_exists)。如果它不添加它。 ($domains[<current key>] = array();)

    2. 将当前数据作为新数组添加到 $domains 数组中的相关位置键下。 (array_push($domains[<current key>], array('query'=>XXX, 'x'=>...));)

    【讨论】:

      猜你喜欢
      • 2021-03-28
      • 2011-09-16
      • 1970-01-01
      • 2010-12-09
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多