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

时间:2014-05-24 18:36:20

标签: php arrays

这是一个数组:

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

如您所见,阵列深入三层。

这是两个字符串:

1. 'csv/path'
2. 'csv/lines/0

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

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

1 个答案:

答案 0 :(得分:0)

Demo

只需遍历给定字符串中的每个键,将新数组设置为从给定数组中的found元素中拉出。您应该添加错误处理。

<?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;
}