无为清净楼资源网 Design By www.qnjia.com
本文实例讲述了php 函数中静态变量使用的问题。分享给大家供大家参考,具体如下:
<"htmlcode">$data = array( array('id' => 1, 'title' => '衣服', 'parent' => 0), array('id' => 2, 'title' => '鞋子', 'parent' => 0), array('id' => 3, 'title' => '衬衫', 'parent' => 1), array('id' => 4, 'title' => 'T恤', 'parent' => 1), array('id' => 5, 'title' => '运动鞋', 'parent' => 2), array('id' => 6, 'title' => '休闲鞋', 'parent' => 2), ); $data2 = array( array('id' => 1, 'title' => '食物', 'parent' => 0), array('id' => 2, 'title' => '肉食', 'parent' => 1), array('id' => 3, 'title' => '素食', 'parent' => 1), array('id' => 4, 'title' => '牛肉', 'parent' => 2), array('id' => 5, 'title' => '面条', 'parent' => 3), array('id' => 6, 'title' => '馒头', 'parent' => 3), ); //生成树型数据 function genTree($items, $id = 'id', $pid = 'parent', $son = 'child') { $tree = array(); $tmpMap = array(); foreach ($items as $item) { $tmpMap[$item[$id]] = $item; } foreach ($items as $item) { if (isset($tmpMap[$item[$pid]])) { $tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]]; } else { $tree[] = &$tmpMap[$item[$id]]; } } unset($tmpMap); return $tree; } //通过给定数据,返回option的字符串,用于select下拉框 function getOpts($data, $idArr = array(), $level = 0, $son = 'child') { static $opt = ''; if (!empty($data)) { foreach ($data as $k => $v) { $opt .= '<option value=' . $v['id'] . (in_array($v['id'], $idArr) "true"' : '') . '>' . str_repeat(' ', $level * 3) . $v['title'] . '</option>'; if (!empty($v[$son])) { getOpts($v[$son], $idArr, $level + 1, $son); } } } return $opt; } $data = genTree($data); echo '<select>'; //第一次调用getOpts时,没有任何问题。 echo getOpts($data); echo '</select>'; $data2 = genTree($data2); echo '<select>'; //当第二次调用时,问题就出现了,还留有上次的数据 echo getOpts($data2); echo '</select>';上述问题,对于可能多次调用的函数,不建议在内部使用静态变量。
修改getOpts函数如下,从函数参数引入一个外部变量的引用,来解决此问题。
function getOpts($data, $idArr = array(), &$opt = '', $level = 0, $son = 'child') { if (!empty($data)) { foreach ($data as $k => $v) { $opt .= '<option value=' . $v['id'] . (in_array($v['id'], $idArr) "true"' : '') . '>' . str_repeat(' ', $level * 3) . $v['title'] . '</option>'; if (!empty($v[$son])) { getOpts($v[$son], $idArr, $opt, $level + 1, $son); } } } } $data = genTree($data); getOpts($data, array(), $opt); echo '<select>'; echo $opt; echo '</select>'; $data2 = genTree($data2); getOpts($data2, array(), $opt2); echo '<select>'; echo $opt2; echo '</select>';更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》及《php程序设计算法总结》
希望本文所述对大家PHP程序设计有所帮助。
标签:
php,函数,静态变量
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
更新日志
2024年09月25日
2024年09月25日
- 《叶倩文 真心真意过一生》[WAV+CUE][400MB]
- 潘越云.1985-世间女子(滚石25周年经典复刻版)【滚石】【WAV+CUE】
- 陈柏宇.2009-CANT.BE.HALF【SONY】【WAV+CUE】
- 李明依.1989-小女生【滚石】【WAV+CUE】
- 《李荣浩 新时代创作新人王》[WAV分轨][310MB]
- 《黑鸭子与马头琴 史上最动听草原音乐》[WAV+CUE][320MB]
- 《汽车发烧音乐精选CD18》[FLAC+CUE][7.1G]
- 郑希怡.2004-Perfect.Date【英皇娱乐】【FLAC分轨】
- 群星.1994-宝丽金超级孖宝2CD【宝丽金】【WAV+CUE】
- 林忆莲.2019-0(2023精装版)【环球】【WAV+CUE】
- Supper.Moment.2016-The.Moment【寰亚】【FLAC分轨】
- 范莉丝.1979-送郎一朵牵牛花(LP版)【大联机构】【WAV+CUE】
- 刘宇.2024-宇宙诗人【哔哟哔哟文化】【FLAC分轨】
- 《全景声白噪音》沉浸式大自然助眠 带你听自然的声音[mp3]
- 纯音入心系列纯音乐《古筝精选 十指弹一赏心曲一心奏出世人心》1CD[MP3][582MB]