Php 组合数组形式的值和键集

Php 组合数组形式的值和键集,php,arrays,Php,Arrays,大家好,大家都在使用php 我一直在寻找答案。 我有两个数组-Persons和Persons数组中的其他索引数组 Persons(array) Selected indexes(array) [0] => 'Mark' [0] => 0 [1] => 'Jane' [1] => 2 [2] => 'Bob' [2] => 1 [3] => 'Jack'

大家好,大家都在使用php

我一直在寻找答案。 我有两个数组-Persons和Persons数组中的其他索引数组

Persons(array)           Selected indexes(array)
  [0] => 'Mark'            [0] => 0
  [1] => 'Jane'            [1] => 2
  [2] => 'Bob'             [2] => 1
  [3] => 'Jack'            
我想创建第三个数组,该数组只包含
Persons
数组中的元素,这些元素在
选定索引中设置。
有点像
SELECT*FROM Persons,其中“Persons id”位于“Selected index”中
但是在PHP中,如果你知道我的意思的话

我可以“foreach”后者并将元素推送到新的数组中,但是是否有一个更短的php解决方案,例如内联使用

编辑:哦,输出应该是:

Selected persons(array)           
  [0] => 'Mark'            
  [1] => 'Jane'           
  [2] => 'Bob'      

(only 0, 2 and 1)

@史蒂夫已经发布了最干净的方法来做到这一点,这里有一个替代方案

$counter = min(count($selected), count($persons));
$result = array_combine(
    array_slice($selected, 0, $counter),
    array_slice($persons, 0, $counter) 
);

@史蒂夫已经发布了最干净的方法来做到这一点,这里有一个替代方案

$counter = min(count($selected), count($persons));
$result = array_combine(
    array_slice($selected, 0, $counter),
    array_slice($persons, 0, $counter) 
);

这应该适合你

<?php

    $person = array('Mark', 'Jane', 'Bob', 'Jack');
    $selected = array(0, 2, 1);
    $selectedPerson = array();


    foreach($selected as $key)
        $selectedPerson[] =  $person[$key];

    var_dump($selectedPerson);  

?>

这应该适合你

<?php

    $person = array('Mark', 'Jane', 'Bob', 'Jack');
    $selected = array(0, 2, 1);
    $selectedPerson = array();


    foreach($selected as $key)
        $selectedPerson[] =  $person[$key];

    var_dump($selectedPerson);  

?>

您正在寻找的是数组\u intersect\u 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.
数组_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.

array_combine()和array_slice()以及min()和count()的组合应该可以让你开始玩这个把戏,尽管它不会直接做你想做的事情。array_combine()和array_slice()以及min()和count()的组合应该可以让你开始玩这个把戏,虽然它不会直接做你想做的事。这才是正确的事情!非常感谢。我在浏览手册的时候尽量睁大眼睛。这正是正确的做法!非常感谢。浏览手册时,我尽量睁大眼睛。