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)
文件:书
$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)
| 归档时间: |
|
| 查看次数: |
11235 次 |
| 最近记录: |