【问题标题】:Change recursive array into single array with same key将递归数组更改为具有相同键的单个数组
【发布时间】:2015-11-06 12:02:48
【问题描述】:

我想知道是否可以更改数组结构,目前我正在接收这个数组:

[{"ano":["2004","2006"]},{"ano":["2006",""]},{"ano":["2011",""]},{"ano":["2013",""]}]

我需要像这样逐行拆分这些日期:

[{"ano":"2004"},{"ano":"2006"},{"ano":"2006"},{"ano":"2011"}]

所以,基本上我认为我可以清除空值和重复值,然后拆分数组或其他什么?

我正在使用 PHP 和 MySQL SELECT 来返回这些值,如下所示:

while($ano = $pegaAno->fetchObject()){
    $ar1 = array("ano" => $ano->inicio);
    $ar2 = array("ano" => $ano->fim);
    $result = array_merge_recursive($ar1, $ar2);
    //print_r($result);
    array_push($return_arr,$result);
}

有什么帮助吗?

【问题讨论】:

  • 能否从一开始就以所需的结构创建数组?还是必须从您在顶部显示的数组中更改它?
  • 嗨@zedd,现在我从数据库中请求 2 列,date_start 和 date_end,所以它来了 2 个数组,我已经合并了它们,但它像上面的第一个数组一样返回 json,我需要使用相同的键返回 date_start 和 date_end 值并删除重复项,因为我需要显示该查询可用的日期列表

标签: php mysql arrays json


【解决方案1】:
while($ano = $pegaAno->fetchObject())
   array_push($return_arr, array("ano" => $ano->inicio), array("ano" => $ano->fim));
$return_arr = array_unique($return_arr);

也许你想要这样的东西?所以你可以有一个数组作为

0 => [ "ano" => value ]
1 => [ "ano" => value ]
2 => [ "ano" => value ]
//etc...

【讨论】:

  • 你这个摇滚人,正是我需要的,你知道我如何检查两个数组之间的重复项并删除它们吗?
  • 没有用,可能需要在 array_push 之前删除重复项?
  • @WilliamXavier 它实际上对我有用,你能告诉我你是怎么尝试的吗?
  • 我试过这样:array_push(array_unique($return_arr),array("ano" => $ano->inicio), array("ano" => $ano->fim));
  • @WilliamXavier 修改了代码,在while之后使用:)
【解决方案2】:

你也可以试试这个代码

    $input[0]['anno'] = array("2004","2006");
    $input[1]['anno'] = array("2008","");
    $input[2]['anno'] = array("2002","2006");
    $input[3]['anno'] = array("2004","2013");
    $arr = array();   
    foreach ($input as $value) { 
    foreach ($value as $key =>  $value1) { 
        foreach ($value1 as  $value2) { 
            $arr[] = $value2;
        }   
    } 

    } 
    $resulted = array_filter(array_unique($arr));
    $resulted_array = array();
    foreach ($resulted as $value) { 
        $resulted_array[][$mainkey] = $value;
    }
    print_r($resulted_array);

//RESULT 

Array
(
    [0] => Array
        (
            [anno] => 2004
        )

    [1] => Array
        (
            [anno] => 2006
        )

    [2] => Array
        (
            [anno] => 2008
        )

    [3] => Array
        (
            [anno] => 2002
        )

    [4] => Array
        (
            [anno] => 2013
        )

)

【讨论】:

  • 但是我有 2 个数组,我应该先合并它们吗?
  • 如果数组相同,则先合并它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多