php实现根据字符串生成对应数组的方法

这篇文章主要介绍了php实现根据字符串生成对应数组的方法,包含了数组操作的技巧及eval函数的用法,需要的朋友可以参考下

本文实例讲述了php实现根据字符串生成对应数组的方法,是比较实用的技巧。分享给大家供大家参考。具体方法如下:

先看看如下示例:

  1. <?php
  2. $config = array(
  3. 'project|page|index' => 'content',
  4. 'project|page|nav' => array(
  5. array(
  6. 'image' => '1.jpg',
  7. 'name' => 'home'
  8. ),
  9. array(
  10. 'image' => '2.jpg',
  11. 'name' => 'about'
  12. )
  13. ),
  14. 'project|page|open' => true
  15. );
  16. ?>

根据$config生成以下数组:

  1. <?php
  2. $result = array(
  3. 'project' => array(
  4. 'page' => array(
  5. 'index' => 'content',
  6. 'nav' => array(
  7. array(
  8. 'image' => '1.jpg',
  9. 'name' => 'home'
  10. ),
  11. array(
  12. 'image' => '2.jpg',
  13. 'name' => 'about'
  14. )
  15. ),
  16. 'open' => true
  17. )
  18. )
  19. );
  20. ?>

方法:使用eval实现:

  1. <?php
  2. $config = array(
  3. 'project|page|index' => 'content',
  4. 'project|page|nav' => array(
  5. array(
  6. 'image' => '1.jpg',
  7. 'name' => 'home'
  8. ),
  9. array(
  10. 'image' => '2.jpg',
  11. 'name' => 'about'
  12. )
  13. ),
  14. 'project|page|open' => true
  15. );
  16. $result = array();
  17. foreach($config as $key=>$val){
  18. $tmp = '';
  19. $keys = explode('|', $key);
  20. for($i=0,$len=count($keys); $i<$len; $i++){
  21. $tmp .= "['".$keys[$i]."']";
  22. }
  23. if(is_array($val)){
  24. eval('$result'.$tmp.'='.var_export($val,true).';');
  25. }elseif(is_string($val)){
  26. eval('$result'.$tmp.'='.$val.';');
  27. }else{
  28. eval('$result'.$tmp.'=$val;');
  29. } //www.phpfensi.com
  30. }
  31. print_r($result);
  32. ?>

输出结果:

  1. Array
  2. (
  3. [project] => Array
  4. (
  5. [ page ] => Array
  6. (
  7. [index] => content
  8. [nav] => Array
  9. (
  10. [0] => Array
  11. (
  12. [image] => 1.jpg
  13. [name] => home
  14. )
  15. [1] => Array
  16. (
  17. [image] => 2.jpg
  18. [name] => about
  19. )
  20. )
  21. [open] => 1
  22. )
  23. )
  24. )

希望本文所述对大家PHP程序设计的学习有所帮助。