Php 组合数组形式的值和键集
大家好,大家都在使用php 我一直在寻找答案。 我有两个数组-Persons和Persons数组中的其他索引数组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'
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()的组合应该可以让你开始玩这个把戏,虽然它不会直接做你想做的事。这才是正确的事情!非常感谢。我在浏览手册的时候尽量睁大眼睛。这正是正确的做法!非常感谢。浏览手册时,我尽量睁大眼睛。