Php 包含键和关联数组的数组,如何建立关系
我有一个数组,它包含从另一个数组到一个特定值的Php 包含键和关联数组的数组,如何建立关系,php,arrays,key,associative-array,Php,Arrays,Key,Associative Array,我有一个数组,它包含从另一个数组到一个特定值的路径,为了更清楚一点,下面是一个示例 我的数组包含我将调用$params的键 Array ( [0] => paths [1] => assets [2] => js ) 这是我的关联数组,我称之为$config Array ( [paths] => Array ( [assets] => Array (
路径
,为了更清楚一点,下面是一个示例
我的数组包含我将调用$params的键
Array
(
[0] => paths
[1] => assets
[2] => js
)
这是我的关联数组,我称之为$config
Array
(
[paths] => Array
(
[assets] => Array
(
[js] => /assets/js
[css] => /assets/css
)
)
[library] => Array
(
[js] => jQuery
)
)
那么,如何使用数组1访问数组2中的值呢
我尝试了$config[$params[0]][$params[1]][$params[2]]
,但根本没有效率。你可以试试
$path = array(
0 => 'paths',
1 => 'assets',
2 => 'js',
);
$data = array(
'paths' => array(
'assets' => array(
'js' => '/assets/js',
'css' => '/assets/css',
),
),
'library' => array(
'js' => 'jQuery',
),
);
$temp = $data;
foreach($path as $key) {
$temp = $temp[$key];
}
var_dump($temp);
输出
string '/assets/js' (length=10)
你可以试试
$path = array(
0 => 'paths',
1 => 'assets',
2 => 'js',
);
$data = array(
'paths' => array(
'assets' => array(
'js' => '/assets/js',
'css' => '/assets/css',
),
),
'library' => array(
'js' => 'jQuery',
),
);
$temp = $data;
foreach($path as $key) {
$temp = $temp[$key];
}
var_dump($temp);
输出
string '/assets/js' (length=10)
嗨,乔纳森,你最后错过了一次机会 请尝试此“$config[$params[0]][$params[1]][$params[2]]”。 它会起作用的 我张贴了一个代码,这对我来说很好
<?php
$params = array(0 => 'paths',1 => 'assets',2 => 'js');
echo '<pre>';print_r($params);
$config = array
(
'paths' => array
(
'assets' => array
(
'js' => '/assets/js',
'css' => '/assets/css'
)
),
'library' => array
(
'js' => 'jQuery'
)
);
echo '<pre>';print_r($config);
echo $config[$params[0]][$params[1]][$params[2]];
?>
你好,乔纳森,你最后错过了一个大括号 请尝试此“$config[$params[0]][$params[1]][$params[2]]”。 它会起作用的 我张贴了一个代码,这对我来说很好
<?php
$params = array(0 => 'paths',1 => 'assets',2 => 'js');
echo '<pre>';print_r($params);
$config = array
(
'paths' => array
(
'assets' => array
(
'js' => '/assets/js',
'css' => '/assets/css'
)
),
'library' => array
(
'js' => 'jQuery'
)
);
echo '<pre>';print_r($config);
echo $config[$params[0]][$params[1]][$params[2]];
?>
循环应该可以解决您的问题: 这将迭代
$params
中的每个条目,然后访问$config
数组的子项。找到后,$c
将包含当前子阵列。最后,$c
将包含您正在查找的值(NULL
如果路径无效/未找到)
也可以使用array\u reduce
功能以功能性方式执行此操作:
循环应该可以解决您的问题: 这将迭代
$params
中的每个条目,然后访问$config
数组的子项。找到后,$c
将包含当前子阵列。最后,$c
将包含您正在查找的值(NULL
如果路径无效/未找到)
也可以使用array\u reduce
功能以功能性方式执行此操作:
您不是每次为
$temp
引用(指向$data)赋值时都覆盖$data
数组吗?您不是每次为$temp
引用(指向$data)赋值时都覆盖$data
数组吗?