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
)
EDIT: Поэтому я хотел бы получить следующее:
array(
[0]=>
[index1]=>something
[index2]=>something else
[1]=>
[index1]=>something
[index2]=>something else
[2]=>
[index1]=>something
[index2]=>something else
)
Как получить несколько индексов массива с помощью функции Set:: extract в cakephp?
Это возвращает одно значение:
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}), интерпретируется как регулярное выражение".
Эта линия казалась скрытой и не очень вопиющей. Поэтому, зная это, я просто использовал правила регулярных выражений, чтобы получить нужные мне данные. У меня есть массив, который вытащил сообщения wordpress из api, мне нужно было сузить результаты до 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
Чтобы получить только идентификатор и заголовок, я добавил следующую строку.
pr(Set::classicExtract($pages, 'pages.{n}.{(id|title)}'));
это дало мне:
array(
posts=>
0=>
id => 3
title => Sample Page
1=>
id => 7
title => Sample Page 2
ДОКУМЕНТАЦИЯ: Book