最近碰到一道PHP程序题,感觉挺有意思,分享如下:
题目
给定一个不定长度的字符串,将其转换为对应的多维数组,数组的维度等于字符串的长度。
例如给定字符串为$str = 'abc',则转换后的数组为$result['a']['b']['c'] = 1.
先给出本人解题的过程如下:
$str = 'abc';
$str = strrev($str);
$len = strlen($str);
// 由于PHP解释器解释代码方式的缘故,将strlen写入循环则会执行$len次,所以建议提取出来以节省资源,提高PHP执行速度。
for ($i = 0; $i < $len; $i++) {
if ($i != 0) {
$data[$i][$str[$i]] = $data[$i-1];
} else {
$data[$i][$str[$i]] = 1;
}
}
$result = $data[$len-1];
var_dump($result);die();
思路如下:
循环所给字符串,使用$data存储每次循环结果,根据所要结果样式,设置$data为二维数组,一维键值用于更方便找到上次循环的结果,之后每次将上次的循环结果,也就是一个数组,赋值给当前循环项,最终获取循环结果。
将最终结果换个写法更便于理解:
$result = array('a'=>array('b'=>array('c'=>1));