2016-08-15 1 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.

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

Затем получить выход путем поиска ключа, соответствующего каждому значению из $input в переиндексирован массиве.

$output = array_map(function($x) use ($words) { return $words[$x][0]; }, $input); 
Смежные вопросы