如何从数组中提取特定字段

Ric*_*ck 2 php arrays foreach cakephp multidimensional-array

我有一个看起来像的数组

$articles = array([0] => array('title' => 'When ....',
                               'description' => '....', 
                               'created' => '2011-02-21'
                              ), 
                  [1] => array('title' => 'Something ....',
                               'description' => 'When ....', 
                               'created' => '2011-02-21'
                              ),
            );
Run Code Online (Sandbox Code Playgroud)

我想只提取标题.无论如何在不使用for和foreach循环的情况下检索标题.我不介意标题变成单个字符串.我在想破坏数组但是添加了描述并创建了.

dog*_*c69 10

考虑到它的CakePHP, $titles = Set::extract('/title', $articles);

编辑:

http://book.cakephp.org/view/1487/Set

更新:

使用CakePHP 2.x Hash取代了Set.

$titles = Hash::extract($articles, '{n}.title');

  • 哇,确实应该接受答案. (3认同)

Kin*_*nch 8

你可以使用例如array_map,但为什么你不想使用循环?事实上,每个能够以你想要的方式修改数组的方法都会迭代它.

function reduce_to_title ($item) {
  return $item['title'];
};
$titles = array_map('reduce_to_title', $articles);
Run Code Online (Sandbox Code Playgroud)

或者因为PHP> = 5.3

$titles = array_map(function ($item) {
  return $item['title'];
}, $articles);
Run Code Online (Sandbox Code Playgroud)

  • Set :: extract('/ title',$ articles); 它就像它一样短. (2认同)

Gau*_*rav 5

你可以用它

print_r(array_map('array_shift', $articles));
Run Code Online (Sandbox Code Playgroud)

编辑:

假设:如果title是数组的第一个元素.