我有一个像这样的数组:
array( array(), array(), array(), array() );
主数组中的数组包含4个键及其值。所有数组中的键都是相同的:
array( 'id' => 'post_1',
'desc' => 'Description 1',
'type' => 'type1',
'title' => 'Title'
);
array( 'id' => 'post_2',
'desc' => 'Description 2',
'type' => 'type2',
'title' => 'Title'
);
所以我想创建另一个数组并提取id
和type
值并将它们放在一个新的数组中:
array( 'post_1' => 'type1', 'post_2' => 'type2'); // and so on
此数组中的键将是id
键旧数组的值,它们的值将是type
键的值。
那么有可能实现这一目标吗?我试着搜索php.net Array Functions,但我不知道要使用哪个函数?
答案 0 :(得分:85)
PHP最近为他们的数组函数添加了新函数,它完全符合您的要求。 我正在回答这个问题,希望将来有人可以帮助这个问题。
执行此操作的功能是array_column
。
为了得到你想要的东西你会写:
array_column($oldArray, 'type', 'id');
请注意,它仅在PHP 5.5.0版本中引入,因此要在较低版本的PHP上使用它,要么使用已接受的答案,要么查看如何在PHP中实现此函数并使用此库:{{3 }}
答案 1 :(得分:31)
只需使用好的循环:
$newArray = array();
foreach ($oldArray as $entry) {
$newArray[$entry['id']] = $entry['type'];
}
答案 2 :(得分:-1)
假设我们有一个数组 $ oldArray ,我们要从中提取第二个数组 $ newArray 是我们将被存储的一个。
$oldArr = array(
array( 'id' => 'post_1',
'desc' => 'Description 1',
'type' => 'type1',
'title' => 'Title'
),
array( 'id' => 'post_2',
'desc' => 'Description 2',
'type' => 'type2',
'title' => 'Title'
)
);
现在我们只需使用 array_column 方法,如下所示
$newArr = array_column($oldArr, 'type', 'id');
它将按键/值对提供输出
array
(
[post_1] => type1
[post_2] => type2
)