使用extract检索多个数组值

Tim*_*yce 14 cakephp

array(
    [0]=>
        [index1]=>something
        [index2]=>something else
        [index3]=>something more
    [1]=>
        [index1]=>something
        [index2]=>something else
        [index3]=>something more
    [2]=>
        [index1]=>something
        [index2]=>something else
        [index3]=>something more
)
Run Code Online (Sandbox Code Playgroud)

编辑:所以我想检索以下内容:

array(
    [0]=>
        [index1]=>something
        [index2]=>something else
    [1]=>
        [index1]=>something
        [index2]=>something else
    [2]=>
        [index1]=>something
        [index2]=>something else
)
Run Code Online (Sandbox Code Playgroud)

如何使用cakephp中的Set :: extract函数获取数组的多个索引?

这将检索一个值:

Set::extract($array, '{n}.index1');
Run Code Online (Sandbox Code Playgroud)

但我想获得多个值...比如,index1和index2.

我试过以下的陈述,但无济于事.

Set::extract($array, '[{n}.index1, {n}.index2']);
Run Code Online (Sandbox Code Playgroud)

编辑

    $__pages = Hash::merge(
                    Hash::extract($pages, 'pages.{n}.id'),
                    Hash::extract($pages, 'pages.{n}.title')
                    );
    pr($__pages);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [0] => 2
    [1] => 4
    [2] => 104
    [3] => Sample Page
    [4] => about us
    [5] => Services
)
Run Code Online (Sandbox Code Playgroud)

这对我没有帮助,因为我仍然需要这样的关联:

Array(
   [2] => Sample Page
   [4] => About us
   [104] => Services
)
Run Code Online (Sandbox Code Playgroud)

我甚至会满意:

Array(
   Array(id => 2, title => Sample Page)
   Array(id => 4, title => About Us)
   Array(id => 104, title => Services)
)
Run Code Online (Sandbox Code Playgroud)

回答 codeparadox的答案适用于我提供的测试代码.这是现实生活中的代码,以防有人在这里绊倒.它在书中指出,"除{n}和{s}之外的括号中的任何字符串文字都被解释为正则表达式." 这条线似乎是隐藏的,而不是非常明显.所以知道这一点,我只是使用正则表达式规则来检索我需要的数据.我有一个数组从api中提取wordpress帖子,我需要将结果缩小到id, title.

array(
   posts=>
      0=>
         id => 3
         slug => sample-page
         type => page
         title => Sample Page
         //...and so on 

      1=>
         id => 7
         slug => sample-page-2
         type => page
         title => Sample Page 2
         //...and so on 
Run Code Online (Sandbox Code Playgroud)

为了只检索id和标题,我添加了以下行.

pr(Set::classicExtract($pages, 'pages.{n}.{(id|title)}'));
Run Code Online (Sandbox Code Playgroud)

这给了我:

array(
   posts=>
      0=>
         id => 3
         title => Sample Page

      1=>
         id => 7
         title => Sample Page 2
Run Code Online (Sandbox Code Playgroud)

文件:

the*_*dox 6

$arr = array(
            array(
                'index1'=>'something',
                'index2'=>'something else',
                'index3'=>'something more',
            ),
            array(
                'index1'=>'something',
                'index2'=>'something else',
                'index3'=>'something more',
            ),
            array(
                'index1'=>'something',
                'index2'=>'something else',
                'index3'=>'something more',
            )
        );

$output = Set::classicExtract($arr, '{n}.{index[1-2]}');

print_r($output);

// output


Array
(
    [0] => Array
        (
            [index1] => something
            [index2] => something else
        )

    [1] => Array
        (
            [index1] => something
            [index2] => something else
        )

    [2] => Array
        (
            [index1] => something
            [index2] => something else
        )

)
Run Code Online (Sandbox Code Playgroud)