Php 使用分隔字符串,如何获取数组项?

Php 使用分隔字符串,如何获取数组项?,php,arrays,Php,Arrays,这是一个数组: array('csv'=> array('path'=>'/file.csv', 'lines'=>array('line1', 'line2', 'line3' ) ) ) 如您所见,该阵列有三层深度 以下是两个字符串: 1. 'csv/path' 2.

这是一个数组:

array('csv'=>
      array('path'=>'/file.csv',
            'lines'=>array('line1',
                           'line2',
                           'line3'
                          )
      )
)
如您所见,该阵列有三层深度

以下是两个字符串:

1. 'csv/path'
2. 'csv/lines/0
使用
/
作为分隔符,字符串1将获得
'/file.csv'
,字符串2将获得
'line1'
。我一直在考虑使用递归函数,但我只是不知道如何去做

我的想法是我不知道我正在访问哪个数组键。我正在创建一个通用函数,它将字符串作为输入并返回数组中的相应值。

只需迭代给定字符串中的每个键,将要从中提取的新数组设置为给定数组中找到的元素。您应该添加错误处理

<?php

$array = array('csv'=>
      array('path'=>'/file.csv',
            'lines'=>array('line1',
                           'line2',
                           'line3'
                          )
      )
);

echo extractData($array, 'csv/path'); // echoes /file.csv

echo extractData($array, 'csv/lines/0'); // echoes line1

function extractData($array, $string){
  $keys = explode('/', $string);
  $data = $array;
  foreach ($keys as $key){
    $data = $data[$key];
  }
  return $data;
}

工作正常。现在我正在研究一种返回原始值作为引用的方法,以便根据需要更改数组中的值但是这没有意义,当你调用函数时,字符串就在那里。也许我想修改路径。我想说
$tmp=&extractData($array,'csv/path')
以便我可以说
$tmp='/new file.csv
$array
变量中设置新文件。到目前为止,extractData在
$array
中返回一个值而不是引用。它返回一个值,因为您给它一个引用和源数组。啊,所以你也想用它来更新数组。有道理。你是想让我帮你吗?现在我只是想寻求一些有用的提示、建议和解决方案。这会很有帮助,因为我一直在思考如何实现这一目标,但还没有找到解决方案。我在脑海中用了很多不同的方法来处理它。我考虑的解决方案是理想的:在给定/分隔字符串的情况下返回对数组项的引用。