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 関数を使用して配列の複数のインデックスを取得するにはどうすればよいですか?
これにより、1 つの値が取得されます。
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)
)
ANSWER
thecodeparadox の回答は、私が提供したテスト コードで機能します。誰かがここでつまずいた場合に備えて、実際のコードを次に示します。この本では、「{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
ドキュメント:本