大家好好用php!
我一直在寻找答案。 我有两个数组--Persons和其他来自Persons数组的索引数组。
Persons(array) Selected indexes(array)
[0] => 'Mark' [0] => 0
[1] => 'Jane' [1] => 2
[2] => 'Bob' [2] => 1
[3] => 'Jack'
我想创建一个第三个数组,它只包含Persons
数组中Selected indexes
数组中的元素。
有点像SELECT * FROM Persons WHERE 'Persons id' IN 'Selected indexes'
,但在PHP中,如果你知道我的意思吗?
我可以" foreach"后者和推送元素到新数组,但有一个较短的PHP解决方案,例如用于内联使用?
编辑:哦,输出应该是:
Selected persons(array)
[0] => 'Mark'
[1] => 'Jane'
[2] => 'Bob'
(only 0, 2 and 1)
答案 0 :(得分:3)
$result = array_intersect_key($people, array_flip($selected));
答案 1 :(得分:1)
@Steve已经发布了最干净的方法来做到这一点,这里有另一种选择
$counter = min(count($selected), count($persons));
$result = array_combine(
array_slice($selected, 0, $counter),
array_slice($persons, 0, $counter)
);
答案 2 :(得分:0)
这对你有用!
<?php
$person = array('Mark', 'Jane', 'Bob', 'Jack');
$selected = array(0, 2, 1);
$selectedPerson = array();
foreach($selected as $key)
$selectedPerson[] = $person[$key];
var_dump($selectedPerson);
?>
答案 3 :(得分:0)
array_intersect_key()就是你要找的东西
$Persons[0]='Mark';
$Persons[1]='Jane';
$Persons[2]='Bob';
$Persons[3]='Jack';
$Selected = array(0,2);
$result = array_intersect_key($Persons, array_flip($Selected))
var_dump($result); // returns Mark, Bob.