首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数组PHP中提取用于字符串的数组键

如何在数组PHP中提取用于字符串的数组键
EN

Stack Overflow用户
提问于 2013-09-14 06:49:07
回答 3查看 186关注 0票数 4

我需要将关联数组键提取到字符串中,并使用"/“或任何字符/符号进行内爆。

例如:

代码语言:javascript
复制
$array = array([key1] => 
                array([key11] => 
                     array([key111] => 'value111', 
                           [key112] => 'value112', 
                           [key113] => 'value113',
                          ),
                 ),
           );

我需要如下数组的输出:

代码语言:javascript
复制
array([0] => 'key1/key11/key111',[1] => 'key1/key11/key112', [2] => 'key1/key11/key112');
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-14 07:10:11

我已经编辑了一个给here的答案,并给出了下面的代码。

代码语言:javascript
复制
function listArrayRecursive($someArray, &$outputArray, $separator = "/") {
    $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($someArray), RecursiveIteratorIterator::SELF_FIRST);
    foreach ($iterator as $k => $v) {

        if (!$iterator->hasChildren()) {
            for ($p = array(), $i = 0, $z = $iterator->getDepth(); $i <= $z; $i++) {
                $p[] = $iterator->getSubIterator($i)->key();
            }
            $path = implode($separator, $p);
            $outputArray[] = $path;
        }
    }
}

$outputArray = array();
listArrayRecursive($array, $outputArray);
print_r($outputArray);

输入:

代码语言:javascript
复制
Array
(
    [key1] => Array
        (
            [key11] => Array
                (
                    [key111] => value111
                    [key112] => value113
                    [key113] => value113
                )
        )
)

输出:

代码语言:javascript
复制
Array
(
    [0] => key1/key11/key111
    [1] => key1/key11/key112
    [2] => key1/key11/key113
)
票数 2
EN

Stack Overflow用户

发布于 2013-09-14 06:58:42

工作在不同的数组深度:

代码语言:javascript
复制
function getKeys($array, $prefix='', $separator = '/') {
  $return = array();
  foreach($array as $key => $value) {
    if (!is_array($value)) $return[] = $prefix . $key;
    else $return = array_merge($return, getKeys($value, $prefix . $key . separator), $separator);
  }
  return $return;
}

$keys = getKeys($array, '', '#');

见在线小提琴http://ideone.com/krU4Xn

票数 1
EN

Stack Overflow用户

发布于 2013-09-14 06:56:32

你可以做一些类似..。

代码语言:javascript
复制
    $mapArray = array();
    $symbol = '/';
    foreach($array as $k =>$v)
        foreach($v as $k1 =>$v1)
            foreach($v1 as $k2 =>$v2)
                $mapArray[] = $k.$symbol.$k1.$symbol.$k2; 

而且,这显然只适用于这个特定的情况,如果它需要更通用,它可以做,但我认为这应该让你开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18799152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档