重新排列并获得PHP数组

时间:2016-08-15 10:56:15

标签: php arrays

在PHP上有没有办法可以获得$input数组中字符串的排列

$input = array(3) {
    [0]=>
    string(3) "one"
    [1]=>
    string(3) "two"
    [2]=>
    string(5) "three"
}

然后使用$reference数组作为参考

$reference = array(3) {
    [0]=>
    array(2) {
        [0]=>
        string(1) "2"
        [1]=>
        string(3) "two"
    }
    [1]=>
    array(2) {
        [0]=>
        string(1) "3"
        [1]=>
        string(5) "three"
    }
    [2]=>
        array(2) {
        [0]=>
        string(1) "1"
        [1]=>
        string(3) "one"
    }
}

结果是$output数组?

$output = array(3) {
    [0]=>
    string(3) "1"
    [1]=>
    string(3) "2"
    [2]=>
    string(5) "3"
}

2 个答案:

答案 0 :(得分:2)

您可以使用array_column通过第二列("两个","三个"等)重新索引参考数组。

$words = array_column($reference, 0, 1);

然后通过在重建索引数组中查找与$input中每个值对应的键来获取输出。

$output = array_map(function($x) use ($words) {
    return $words[$x];
}, $input);

答案 1 :(得分:0)

您的用例不是很清楚,但我可以使用array_flip

进行成像
$input = ['one','two','three'];
$flipped = array_flip($input);

echo $flipped['one']; //0 - arrays in php are zero based
echo $flipped['three']; //2 - arrays in php are zero based

如果你真的需要所描述的$reference数组,那么一个简单的循环就可以了:

$reference=[];
foreach($input as $key=>$value)
    $reference[]=[$key+1, $value];