【发布时间】:2016-07-14 19:29:21
【问题描述】:
我有下一个问题,我有这个多维数组:
Array
(
[0] => Array
(
[0] => Array
(
[start_date] => 2016-07-14 07:00
[end_date] => 2016-07-14 07:20
[type] => 2
)
[1] => Array
(
[start_date] => 2016-07-14 07:20
[end_date] => 2016-07-14 07:40
[type] => 2
)
[2] => Array
(
[start_date] => 2016-07-14 07:40
[end_date] => 2016-07-14 08:00
[type] => 2
)
[3] => Array
(
[start_date] => 2016-07-14 08:00
[end_date] => 2016-07-14 08:15
[type] => 3
)
[4] => Array
(
[start_date] => 2016-07-14 08:15
[end_date] => 2016-07-14 08:30
[type] => 3
)
)
[1] => Array
(
[0] => Array
(
[start_date] => 2016-07-15 07:00
[end_date] => 2016-07-15 07:20
[type] => 2
)
[1] => Array
(
[start_date] => 2016-07-15 07:20
[end_date] => 2016-07-15 07:40
[type] => 2
)
[2] => Array
(
[start_date] => 2016-07-15 07:40
[end_date] => 2016-07-15 08:00
[type] => 2
)
[3] => Array
(
[start_date] => 2016-07-15 08:00
[end_date] => 2016-07-15 08:15
[type] => 3
)
[4] => Array
(
[start_date] => 2016-07-15 08:15
[end_date] => 2016-07-15 08:30
[type] => 3
)
)
[2] => Array
(
[0] => Array
(
[start_date] => 2016-07-18 07:00
[end_date] => 2016-07-18 07:20
[type] => 2
)
[1] => Array
(
[start_date] => 2016-07-18 07:20
[end_date] => 2016-07-18 07:40
[type] => 2
)
[2] => Array
(
[start_date] => 2016-07-18 07:40
[end_date] => 2016-07-18 08:00
[type] => 2
)
[3] => Array
(
[start_date] => 2016-07-18 08:00
[end_date] => 2016-07-18 08:15
[type] => 3
)
[4] => Array
(
[start_date] => 2016-07-18 08:15
[end_date] => 2016-07-18 08:30
[type] => 3
)
)
[3] => Array
(
[0] => Array
(
[start_date] => 2016-07-19 07:00
[end_date] => 2016-07-19 07:20
[type] => 2
)
[1] => Array
(
[start_date] => 2016-07-19 07:20
[end_date] => 2016-07-19 07:40
[type] => 2
)
[2] => Array
(
[start_date] => 2016-07-19 07:40
[end_date] => 2016-07-19 08:00
[type] => 2
)
[3] => Array
(
[start_date] => 2016-07-19 08:00
[end_date] => 2016-07-19 08:15
[type] => 3
)
[4] => Array
(
[start_date] => 2016-07-19 08:15
[end_date] => 2016-07-19 08:30
[type] => 3
)
)
[4] => Array
(
[0] => Array
(
[start_date] => 2016-07-20 07:00
[end_date] => 2016-07-20 07:20
[type] => 2
)
[1] => Array
(
[start_date] => 2016-07-20 07:20
[end_date] => 2016-07-20 07:40
[type] => 2
)
[2] => Array
(
[start_date] => 2016-07-20 07:40
[end_date] => 2016-07-20 08:00
[type] => 2
)
[3] => Array
(
[start_date] => 2016-07-20 08:00
[end_date] => 2016-07-20 08:15
[type] => 3
)
[4] => Array
(
[start_date] => 2016-07-20 08:15
[end_date] => 2016-07-20 08:30
[type] => 3
)
)
[5] => Array
(
[0] => Array
(
[start_date] => 2016-07-21 07:00
[end_date] => 2016-07-21 07:20
[type] => 2
)
[1] => Array
(
[start_date] => 2016-07-21 07:20
[end_date] => 2016-07-21 07:40
[type] => 2
)
[2] => Array
(
[start_date] => 2016-07-21 07:40
[end_date] => 2016-07-21 08:00
[type] => 2
)
[3] => Array
(
[start_date] => 2016-07-21 08:00
[end_date] => 2016-07-21 08:15
[type] => 3
)
[4] => Array
(
[start_date] => 2016-07-21 08:15
[end_date] => 2016-07-21 08:30
[type] => 3
)
)
[6] => Array
(
[0] => Array
(
[start_date] => 2016-07-22 07:00
[end_date] => 2016-07-22 07:20
[type] => 2
)
[1] => Array
(
[start_date] => 2016-07-22 07:20
[end_date] => 2016-07-22 07:40
[type] => 2
)
[2] => Array
(
[start_date] => 2016-07-22 07:40
[end_date] => 2016-07-22 08:00
[type] => 2
)
[3] => Array
(
[start_date] => 2016-07-22 08:00
[end_date] => 2016-07-22 08:15
[type] => 3
)
[4] => Array
(
[start_date] => 2016-07-22 08:15
[end_date] => 2016-07-22 08:30
[type] => 3
)
)
)
另外,我还有以下功能:
public function transformValue($array = [], $level = 1) {
$return = [];
foreach($array as $key => $value){
if(is_array($value)){
$this->transformValue($value, $level + 1);
} else{
$return[$key] = $value;
}
}
return $return;
}
这个函数接收这个多数组作为参数,因为我需要将它标准化如下:
Array
(
[start_date] => 2016-07-14 07:00
[end_date] => 2016-07-14 07:20
[type] => 2
)
Array
(
[start_date] => 2016-07-14 07:20
[end_date] => 2016-07-14 07:40
[type] => 2
)
Array
(
[start_date] => 2016-07-14 07:40
[end_date] => 2016-07-14 08:00
[type] => 2
)
Array
(
[start_date] => 2016-07-14 08:00
[end_date] => 2016-07-14 08:15
[type] => 3
)
Array
(
[start_date] => 2016-07-14 08:15
[end_date] => 2016-07-14 08:30
[type] => 3
)
Array
(
[start_date] => 2016-07-15 07:00
[end_date] => 2016-07-15 07:20
[type] => 2
)
Array
(
[start_date] => 2016-07-15 07:20
[end_date] => 2016-07-15 07:40
[type] => 2
)
Array
(
[start_date] => 2016-07-15 07:40
[end_date] => 2016-07-15 08:00
[type] => 2
)
Array
(
[start_date] => 2016-07-15 08:00
[end_date] => 2016-07-15 08:15
[type] => 3
)
Array
(
[start_date] => 2016-07-15 08:15
[end_date] => 2016-07-15 08:30
[type] => 3
)
Array
(
[start_date] => 2016-07-18 07:00
[end_date] => 2016-07-18 07:20
[type] => 2
)
Array
(
[start_date] => 2016-07-18 07:20
[end_date] => 2016-07-18 07:40
[type] => 2
)
Array
(
[start_date] => 2016-07-18 07:40
[end_date] => 2016-07-18 08:00
[type] => 2
)
Array
(
[start_date] => 2016-07-18 08:00
[end_date] => 2016-07-18 08:15
[type] => 3
)
Array
(
[start_date] => 2016-07-18 08:15
[end_date] => 2016-07-18 08:30
[type] => 3
)
Array
(
[start_date] => 2016-07-19 07:00
[end_date] => 2016-07-19 07:20
[type] => 2
)
Array
(
[start_date] => 2016-07-19 07:20
[end_date] => 2016-07-19 07:40
[type] => 2
)
Array
(
[start_date] => 2016-07-19 07:40
[end_date] => 2016-07-19 08:00
[type] => 2
)
Array
(
[start_date] => 2016-07-19 08:00
[end_date] => 2016-07-19 08:15
[type] => 3
)
Array
(
[start_date] => 2016-07-19 08:15
[end_date] => 2016-07-19 08:30
[type] => 3
)
Array
(
[start_date] => 2016-07-20 07:00
[end_date] => 2016-07-20 07:20
[type] => 2
)
Array
(
[start_date] => 2016-07-20 07:20
[end_date] => 2016-07-20 07:40
[type] => 2
)
Array
(
[start_date] => 2016-07-20 07:40
[end_date] => 2016-07-20 08:00
[type] => 2
)
Array
(
[start_date] => 2016-07-20 08:00
[end_date] => 2016-07-20 08:15
[type] => 3
)
Array
(
[start_date] => 2016-07-20 08:15
[end_date] => 2016-07-20 08:30
[type] => 3
)
Array
(
[start_date] => 2016-07-21 07:00
[end_date] => 2016-07-21 07:20
[type] => 2
)
Array
(
[start_date] => 2016-07-21 07:20
[end_date] => 2016-07-21 07:40
[type] => 2
)
Array
(
[start_date] => 2016-07-21 07:40
[end_date] => 2016-07-21 08:00
[type] => 2
)
Array
(
[start_date] => 2016-07-21 08:00
[end_date] => 2016-07-21 08:15
[type] => 3
)
Array
(
[start_date] => 2016-07-21 08:15
[end_date] => 2016-07-21 08:30
[type] => 3
)
Array
(
[start_date] => 2016-07-22 07:00
[end_date] => 2016-07-22 07:20
[type] => 2
)
Array
(
[start_date] => 2016-07-22 07:20
[end_date] => 2016-07-22 07:40
[type] => 2
)
Array
(
[start_date] => 2016-07-22 07:40
[end_date] => 2016-07-22 08:00
[type] => 2
)
Array
(
[start_date] => 2016-07-22 08:00
[end_date] => 2016-07-22 08:15
[type] => 3
)
Array
(
[start_date] => 2016-07-22 08:15
[end_date] => 2016-07-22 08:30
[type] => 3
)
我的问题:当我调用我的函数并分配给一个变量时,该函数似乎没有为该变量分配任何值,但是如果我使用 print_r 检查函数的返回() 显示我们需要的值。我应该跳过一些事情,我需要“推动”才能继续。就是这样用函数的返回声明变量:
$return_value_function = [];
$return_value_function = $this->transformValue($array_values);
变量 $return_value_function 不保存函数返回。我的错在哪里?
【问题讨论】:
-
$this->transformValue($value, $level + 1);返回什么以及返回什么变量? -
我不明白
$level的用途。 -
@Chay22 $level 用于确定数组的深度,函数是递归的。
-
@u_mulder $level 在函数中初始化为1并增加其值直到找到多数组中的值
-
你明白调用
$this->transformValue($value, $level + 1)会将一些数据返回到一个void 中吗?
标签: php function multidimensional-array