Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 包含键和关联数组的数组,如何建立关系_Php_Arrays_Key_Associative Array - Fatal编程技术网

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
数组吗?