2016-08-15 79 views
0

是否有关于PHP的方式,我可以进去$input阵列安排字符串的重新排列,并得到PHP阵列等效值

$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" 
} 
+0

为什么不把参考数组做成这样,如果我正确理解你的问题。 $参考=阵列( “一个”=> “1”, “两个”=> “2”, “三化”=> “3”, ) –

+0

我在答复中没有什么是走现有的数组并创建@TalhaMalik建议的内容。 – TecBrat

回答

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]; 
1

这对我有效。

foreach ($reference as $value){ 
    $new_ref[$value[1]] = $value[0]; 
} 

foreach($input as $in){ 
    $output[]=$new_ref[$in]; 
} 

var_export($output); 

PHP Sandbox

我做的第一件事是做一个新的阵列是关键了相匹配的输入,然后我分配了这些键的输出数组中的项目的价值。

1

您可以使用array_column将第二列(“2”,“3”等)重新索引您的参考数组。

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

然后通过查找重建索引数组中对应于每个值从$input键让你的输出。

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