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

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

先看看如下示例:

<?php
$config = array(
 'project|page|index' => 'content',
 'project|page|nav' => array(
 array(
 'image' => '1.jpg',
 'name' => 'home'
 ),
 array(
 'image' => '2.jpg',
 'name' => 'about'
 )
 ),
 'project|page|open' => true
);
?>

根据$config生成以下数组:

<?php
$result = array(
 'project' => array(
 'page' => array(
 'index' => 'content',
 'nav' => array(
  array(
  'image' => '1.jpg',
  'name' => 'home'
  ),
  array(
  'image' => '2.jpg',
  'name' => 'about'
  )
 ),
 'open' => true
 )
 )
);
?> 

方法:使用eval实现:

<?php
$config = array(
 'project|page|index' => 'content',
 'project|page|nav' => array(
 array(
 'image' => '1.jpg',
 'name' => 'home'
 ),
 array(
 'image' => '2.jpg',
 'name' => 'about'
 )
 ),
 'project|page|open' => true
); 

$result = array();
foreach($config as $key=>$val){ 

 $tmp = '';
 $keys = explode('|', $key); 

 for($i=0,$len=count($keys); $i<$len; $i++){
 $tmp .= "['".$keys[$i]."']";
 } 

 if(is_array($val)){
 eval('$result'.$tmp.'='.var_export($val,true).';');
 }elseif(is_string($val)){
 eval('$result'.$tmp.'='.$val.';');
 }else{
 eval('$result'.$tmp.'=$val;');
 } 

} 

print_r($result); 

?> 

输出结果:

Array
(
[project] => Array
(
[ page ] => Array
(
[index] => content
[nav] => Array
(
[0] => Array
(
[image] => 1.jpg
[name] => home
)
[1] => Array
(
[image] => 2.jpg
[name] => about
)
)
[open] => 1
)
)
)

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, 数组
, 字符串
, 生成
根据
php 数组生成字符串、随机字符串生成器、随机生成字符串、c 生成随机字符串、php 生成随机字符串,以便于您获取更多的相关知识。

时间: 2024-10-26 11:03:52

php实现根据字符串生成对应数组的方法_php技巧的相关文章

php使用explode()函数将字符串拆分成数组的方法_php技巧

本文实例讲述了php使用explode()函数将字符串拆分成数组的方法.分享给大家供大家参考.具体分析如下: explode()函数:字符串拆分成数组 示例代码如下: <?php $str = "朝阳区,海淀区,西城区,东城区,丰台区"; $arr = explode(",",$str); echo "<pre>"; print_r($arr); ?> 结果如下: <pre>Array ( [0] =>

php将字符串随机分割成不同长度数组的方法_php技巧

本文实例讲述了php将字符串随机分割成不同长度数组的方法.分享给大家供大家参考.具体分析如下: 这里使用php对字符串在指定的长度范围内进行随机分割,把分割后的结果存在数组里面 function RandomSplit($min, $max, $str){ $a = array(); while ($str != ''){ $p = rand($min, $max); $p = ($p > strlen($str)) ? strlen($str) : $p; $buffer = substr($

php一个解析字符串排列数组的方法_php技巧

本文实例讲述了php一个解析字符串排列数组的方法.分享给大家供大家参考.具体如下: <?php $str="1|苹果|30 1|桃子|50 1|普通|10 2|小麦|100 2|玉米|35 2|大米|30 3|电脑|5 3|MP3|121 3|打印机|8"; $strArray=explode("\n",$str); /*关键的是下面的代码*/ $result=array(); foreach($strArray as $item) { $itemArray=

PHP实现多维数组转字符串和多维数组转一维数组的方法_php技巧

本文实例讲述了PHP实现多维数组转字符串和多维数组转一维数组的方法.分享给大家供大家参考.具体实现方法如下: /** * @method 多维数组转字符串 * @param type $array * @return type $srting * @author yanhuixian */ function arrayToString($arr) { if (is_array($arr)){ return implode(',', array_map('arrayToString', $arr)

php数组生成html下拉列表的方法_php技巧

本文实例讲述了php数组生成html下拉列表的方法.分享给大家供大家参考.具体如下: 这段代码可根据定义好的php数组动态生成一个html的下拉列表(select) <?php //Array contents array 1 :: value $myArray1 = array('Cat','Mat','Fat','Hat'); //Array contents array 2 :: key => value $myArray2 = array('c'=>'Cat','m'=>'

PHP函数实现从一个文本字符串中提取关键字的方法_php技巧

本文实例讲述了PHP函数实现从一个文本字符串中提取关键字的方法.分享给大家供大家参考.具体分析如下: 这是一个函数定位接收一个字符串作为参数(连同其他配置可选参数),并且定位该字符串中的所有关键字(出现最多的词),返回一个数组或一个字符串由逗号分隔的关键字.功能正常工作,但我正在改进,因此,感兴趣的朋友可以提出改进意见. /** * Finds all of the keywords (words that appear most) on param $str * and return them

php根据年月获取当月天数及日期数组的方法_php技巧

本文实例讲述了php根据年月获取当月天数及日期数组的方法.分享给大家供大家参考,具体如下: function get_day( $date ) { $tem = explode('-' , $date); //切割日期 得到年份和月份 $year = $tem['0']; $month = $tem['1']; if( in_array($month , array( 1 , 3 , 5 , 7 , 8 , 01 , 03 , 05 , 07 , 08 , 10 , 12))) { // $te

PHP实现自动识别原编码并对字符串进行编码转换的方法_php技巧

本文实例讲述了PHP实现自动识别原编码并对字符串进行编码转换的方法.分享给大家供大家参考,具体如下: /** * 对数据进行编码转换 * @param array/string $data 数组 * @param string $output 转换后的编码 * Created on 2016-7-13 */ function array_iconv($data, $output = 'utf-8') { $encode_arr = array('UTF-8','ASCII','GBK','GB2

php通过array_merge()函数合并两个数组的方法_php技巧

本文实例讲述了php通过array_merge()函数合并两个数组的方法.分享给大家供大家参考.具体分析如下: php通过array_merge()函数合并两个数组,array_merge()是一个php函数,用于将两个或者多个数组合并,后一个数组会追加到前一个数组后面,并返回结果数组.它接受两个或两个以上的数组,并返回一个包含了所有元素的数组. $first = array("aa", "bb", "cc"); $second = array(