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
)
编辑:所以我想检索以下内容:
array(
[0]=>
[index1]=>something
[index2]=>something else
[1]=>
[index1]=>something
[index2]=>something else
[2]=>
[index1]=>something
[index2]=>something else
)
如何使用 cakephp 中的 Set::extract 函数获取数组的多个索引?
这会检索一个值:
Set::extract($array, '{n}.index1');
但我想获得多个值……比如 index1 和 index2。
我尝试了以下语句,但无济于事。
Set::extract($array, '[{n}.index1, {n}.index2']);
编辑
$__pages = Hash::merge(
Hash::extract($pages, 'pages.{n}.id'),
Hash::extract($pages, 'pages.{n}.title')
);
pr($__pages);
输出:
Array
(
[0] => 2
[1] => 4
[2] => 104
[3] => Sample Page
[4] => about us
[5] => Services
)
这并没有真正帮助我,因为我仍然需要这样的关联:
Array(
[2] => Sample Page
[4] => About us
[104] => Services
)
我什至会很高兴:
Array(
Array(id => 2, title => Sample Page)
Array(id => 4, title => About Us)
Array(id => 104, title => Services)
)
回答
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
为了仅检索 id 和标题,我添加了以下行。
pr(Set::classicExtract($pages, 'pages.{n}.{(id|title)}'));
这给了我:
array(
posts=>
0=>
id => 3
title => Sample Page
1=>
id => 7
title => Sample Page 2
文件:书