php implements the method of generating corresponding arrays according to strings
- 2021-07-18 07:35:38
- OfStack
This article describes the example of php implementation according to string generation corresponding array method, is a more practical skills. Share it for your reference. The specific methods are as follows:
Let's take a look at the following example:
<?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
);
?>
Generate the following array from $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
)
)
);
?>
Method: Use eval to implement:
<?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);
?>
Output:
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
)
)
)
I hope this article is helpful to everyone's study of PHP programming.