组合数组形式的值和键集

时间:2014-10-10 15:16:29

标签: php arrays

大家好好用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)

4 个答案:

答案 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.