是否有一种方法可以在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"
}
您可以使用array_column
通过第二列("two", "three"等)重新索引引用数组。
$words = array_column($reference, 0, 1);
然后通过在索引数组中查找$input
中每个值对应的键来获得输出。
$output = array_map(function($x) use ($words) {
return $words[$x];
}, $input);
这对我很有效。
foreach ($reference as $value){
$new_ref[$value[1]] = $value[0];
}
foreach($input as $in){
$output[]=$new_ref[$in];
}
var_export($output);
PHP沙箱我做的第一件事是创建一个新的数组,其中KEY匹配到INPUT,然后我将具有这些KEY的项的值分配给输出数组。
您的用例不是很清楚,但我认为您可以使用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];