我想将此文本分解为三维数组:
Q 11 21 21 ( 40 44 23 ! 24 ! ! Q ! 32 22 48 18 23 49 ! ! ! ! 24 23 Q ! 19 23 06 49 29 15 22 ! ! ! Q ! 20 ( 23 23 ( 40 ! ! ! ! Q ! 21 06 ! 22 22 22 02 ! ! !
Q ! ( 40 05 33 ! 05 ! ! ! ! Q ! 49 49 05 20 20 49 ! ! ! Q ! ! 05 34 ( 40 ( ( 1 Q ! ! 46 46 46 46 46 46 ! ! ! Q ( 46 07 20 12 05 33 ! ! ! !
此时间表采用文本格式。以下是确定数组中每个值的条件:
我希望这样: 的阵列[时间表] [天] [小时]
我该怎么做?有没有选择通过PHP爆炸功能来做?
答案 0 :(得分:3)
多么好的格式!我想我仍然没有得到它,但无论如何我都会尝试回答......
explode
与“\ n”一起使用,您将获得一系列时间表explode
,并且您将拥有一个二维数组explode
的元素
醇>
尝试执行此操作,如果遇到问题,请使用您提供的代码编辑问题。
答案 1 :(得分:2)
没有真正了解你的字符串是如何工作的;这段代码应该可以胜任。
$timetables = explode("\n", $source);
foreach($timetables as $tablekey => $days)
{
$timetables[$tablekey] = explode('Q', $days);
foreach($timetables[$tablekey] as $daykey => $hours)
$timetables[$tablekey][$daykey] = explode(' ', $hours)
}
print_r($timetables, true);
答案 2 :(得分:0)
$x = //...
$x = explode("\n", $x);
foreach($x as $k => $v) {
$x[$k] = explode("Q", $x[$k]);
foreach($x[$k] as $kk => $vv) {
$x[$k][$kk] = explode(" ", $x[$k][$kk]);
}
}
使用array_map我认为你会获得更好的代码。
答案 3 :(得分:0)
这是一个递归函数,它接受一个分隔符数组:
function multi_explode($delimiters, $val) {
$delimiter = array_shift($delimiters);
if (!empty($delimiter)) {
$val = explode($delimiter, $val);
foreach($val as $key => $valval) {
$val[$key] = multi_explode($delimiters, $valval);
}
}
return $val;
}