按值对数组排序

丹尼尔·史洛莫(Daniel Shlomo)

我有这个数组:

array(
 "tour_0" => 1446,
 "tour_1" => 1471,
 "date-from-1471" => "2014-08-07",
 "date-to-1471" => "2014-08-15",
 "tour_2" => 30,
 "date-from-30" => 2014-08-01,
 "date-to-30" => 2014-08-05,
 "tour_3" => 10
)

现在,我需要将其分类为:

array(
 "0" => array("ID" => 1446),
 "1" => array("ID" => 1471, "from" => "2014-08-07", "to" => "2014-08-15"),
 "2" => array("ID" => 30, "from" => "2014-08-07", "to" => "2014-08-15"),
 "3" => array("ID" => 10),
)

我该如何完成这件事?我已经尝试过各种方法,但是我似乎无法弄清楚……

感谢和抱歉的标题,但我只是不知道如何形容它。

托雷斯

这个怎么样?

$ret = [];
foreach($inputArray as $key => $value) {
  if (preg_match('/^tour_([0-9]+)/', $key)) {
    $ret[$value] = ["ID" => $value];
  }

  if (preg_match('/date-from-([0-9]+)/', $key, $matches)) {
    $ret[$matches[1]]["from"] = $value;
  }

  if (preg_match('/date-to-([0-9]+)/', $key, $matches)) {
    $ret[$matches[1]]["to"] = $value;
  } 
}

print_r($ret);
/*
Array
(
    "1446" => Array ("ID" => 1446),
    "1471" => Array ("ID" => 1471, "from" => "2014-08-07", "to" => "2014-08-15"),
    "30"   => Array ("ID" => 30, "from" => "2014-08-01", "to" => "2014-08-05"),
    "10"   => Array ("ID" => 10)
)*/

足够接近?(考虑数组的键顺序(0、1、2、3,...),这是相当琐碎的更改,如果不是,则还可以保存该顺序(在子数组的另一项中) ),并在此数组形成后再次重新组成)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章