如何提取特定的数组键和值到另一个数组?
我有数组的数组像这样:如何提取特定的数组键和值到另一个数组?
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但我不知道使用哪个函数?
并提前致谢。
只需使用一个良好的醇”循环:
$newArray = array();
foreach ($oldArray as $entry) {
$newArray[$entry['id']] = $entry['type'];
}
PHP最近添加了新的功能,以他们的阵列功能,做你想要什么。 我正在回答这个问题,希望这个问题可以帮助未来某个人。
这样做的功能是array_column
。 为了得到你想要,你会写什么:
array_column($oldArray, 'type', 'id');
请注意,它是PHP只推出5.5.0版,所以把它用在低版本的PHP或者使用公认的答案,或者看看如何此功能在PHP中实现和使用这个库:https://github.com/ramsey/array_column
此外,你可以包装在array_unique过滤出重复值:) http://php.net/manual/en/function.array-unique.php – 2014-10-10 22:03:41
让我们假设我们有一个数组$ oldArray从中我们要提取和第二阵列$阵列是在其中我们将申通快递响起最初空白的提取值。
$oldArray = array(
0 => array('id' => 'post_1',
'desc' => 'Description 1',
'type' => 'type1',
'title' => 'Title'
),
1 => array('id' => 'post_2',
'desc' => 'Description 2',
'type' => 'type2',
'title' => 'Title'
)
);
$array = array(); //Blank array
foreach(oldArray as $i => $oldarray){
$array[$i][$oldarray['id']] = $oldarray['type'];
}
现在$阵列有键/值对如下
array(
0 => array('post_1' => 'type1'),
1 => array('post_2' => 'post_2')
);
我upvoted的问题和答案。我怎样才能使PHP不能提供更好的方法? – 2013-06-18 09:14:18
@Olivier'Ölbaum'Scherler好消息:php为此提供了一个功能 - 请参阅较高的upvoted答案。 – mickmackusa 2018-01-13 10:01:34