我在php中有一个这样的数组:
$multid_array = array(
"url" => "www.checkmyhouse.cpm",
"date" => "2019/12/12",
"minor" => 1,
"sittingroom" => 1,
"dinningroom" => 2,
"toilet" => 2,
"parking" => 1,
"bedroom" => 2,
"garage" => 2,
"rooms" => 4,
"garden" => 1,
"url_1" => "-sameurl-",
"date_1" => "2019/12/3",
"minor_1" => 3,
"sittingroom_1" => 2,
"dinningroom_1" => 2,
"toilet_1" => 3,
"parking_1" => 1,
"bedroom_1" => 2,
"garage_1" => 6,
"rooms_1" => 6,
"garden_1" => 1,
"url_2" => "-sameurl-",
"date_2" => "2019/12/5",
"minor_2" => 3,
"sittingroom_2" => 2,
"dinningroom_2" => 2,
"toilet_2" => 3,
"parking_2" => 1,
"bedroom_2" => 5,
"garage_2" => 6,
"rooms_2" => 9,
"garden_2" => 1,
);
我搜索了一下,找到了此链接。但无法弄清楚。保持接近。 array_slice in multidimensional array?
这是我想要的输出:
$array =
[
"levels" => array(
"0" => array(
"url" => "www.checkmyhouse.cpm",
"date" => "2019/12/1",
"minor" => 1,
"sittingroom" => 1,
"dinningroom" => 2,
"toilet" => 2,
"parking" => 1,
"bedroom" => 2,
"garage" => 2,
"rooms" => 5,
"garden" => 1,
),
"1" => array(
"url" => "-sameurl-",
"date" => "2019/12/3",
"minor" => 3,
"sittingroom" => 2,
"dinningroom" => 2,
"toilet" => 3,
"parking" => 1,
"bedroom" => 2,
"garage" => 6,
"rooms" => 6,
"garden" => 1,
),
"2" => array(
"url" => "-sameurl-",
"date" => "2019/12/5",
"minor" => 3,
"sittingroom" => 2,
"dinningroom" => 2,
"toilet" => 3,
"parking" => 1,
"bedroom" => 5,
"garage" => 6,
"rooms" => 9,
"garden" => 1,
)
)
];
只是尝试重新排列它。但是我用过array_slice,只能得到前9个元素的输出。
array_splice($multid_array,9);
但是我想自动运行它,因此,如果将更多信息添加到数组中,它仍然可以工作
答案 0 :(得分:0)
为什么不使用简单的for循环:(在这种情况下,您可以在每个数组中使用不同数量的字段,并且不需要像使用array_chunk
时那样进行固定)
$multid_array = array("url" => "www.checkmyhouse.cpm","date" => "2019/12/12","url_1" => "-sameurl-","date_1" => "2019/12/3","url_2" => "-sameurl-","date_2" => "2019/12/5",);
$ans = [];
foreach($multid_array as $k => $v) {
$parts = explode("_", $k);
$pk = 0; //default as 0 as when no prefix set to key "0"
if (count($parts) > 1) { // check if has suffix
$pk = $parts[1];
$k = $parts[0];
}
if (!isset($ans[$pk]))
$ans[$pk] = []; // init array if first time
$ans[$pk][$k] = $v;
}
现在$ans
将包含您的数据-如果需要,您可以添加“级别”键。
仅当您保存了“ _
”以标记内部索引并且它们未在实际键中使用时,此方法才有效