Php 将递归数组更改为具有相同键的单个数组
我想知道是否可以更改阵列结构,目前我正在接收此阵列:Php 将递归数组更改为具有相同键的单个数组,php,mysql,arrays,json,Php,Mysql,Arrays,Json,我想知道是否可以更改阵列结构,目前我正在接收此阵列: [{"ano":["2004","2006"]},{"ano":["2006",""]},{"ano":["2011",""]},{"ano":["2013",""]}] 我需要把这些日期一行一行地分开,如下所示: [{"ano":"2004"},{"ano":"2006"},{"ano":"2006"},{"ano":"2011"}] while($ano = $pegaAno->fetchObject()){ $ar1
[{"ano":["2004","2006"]},{"ano":["2006",""]},{"ano":["2011",""]},{"ano":["2013",""]}]
我需要把这些日期一行一行地分开,如下所示:
[{"ano":"2004"},{"ano":"2006"},{"ano":"2006"},{"ano":"2011"}]
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);
}
所以,基本上我认为我可以清除空的和重复的值,然后分割数组或其他什么
我使用PHP和MySQL SELECT返回这些值,如下所示:
[{"ano":"2004"},{"ano":"2006"},{"ano":"2006"},{"ano":"2011"}]
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);
}
需要帮忙吗
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...
您也可以尝试此代码
$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
)
)
能否从一开始就在所需的结构中创建阵列?或者它必须从顶部显示的数组中更改吗?嗨@zedd,现在我从数据库中请求两列,date\u start和date\u end,所以它是两个数组,我反复合并了它们,但它返回的json与上面的第一个数组一样,我需要用同一个键返回date_start和date_end值并删除重复项,因为我需要显示可用于该查询的日期列表you rock man,这正是我需要的,你知道我如何检查两个数组之间的重复项并删除它们吗?不起作用,可能需要在array_push之前删除重复项吗?@WilliamXavier它实际上对我有效,你能告诉我你是如何尝试的吗?我已经这样尝试过:
array_push(array_unique($return_arr),array(“ano”=>ano->inicio),array(“ano”=>ano->fim))
@WilliamXavier修改了代码,在while之后使用:)但是我有两个数组,我应该在之前合并它们吗?如果数组在同一个数组中,那么首先合并它。