2011-12-15 3 views
1
Array 
(
    [0] => '1 Fail' 
    [1] => '2 Fail' 
    [2] => '3 Pass' 
    [3] => '4 Pass' 
    [4] => '5 Pass' 
) 

Array 
(
    ['1 Fail'] => '1 Fail' 
    ['2 Fail'] => '2 Fail' 
    ['3 Pass'] => '3 Pass' 
    ['4 Pass'] => '4 Pass' 
    ['5 Pass'] => '5 Pass' 
) 

Есть ли функция PHP для преобразования из массива 1 в массив 2Есть функция PHP для создания ассоциативного массива из индексированного массива

PS: Я знаю, что это так, я ищу встроенную функцию

foreach($result as $value) 
{ 
    $assoc[$value] = $value; 
} 
+0

Вы можете поменять ключи и но я не думаю, что есть встроенная функция для копирования значений в соответствующие ключи. –

+0

почему отрицательный голос – aWebDeveloper

+0

что случилось с «этим»? Почему вы не можете просматривать список функций массива самостоятельно? –

ответ

5

Если предположить, что все ваши значения массива являются уникальными:

$assoc = array_combine(array_values($arr), array_values($arr)); 
+0

Как отличается подход ur от скорости с @DaveRandom – aWebDeveloper

1

Вы могли:

array_walk($array, function ($value, &$key) { 
    $key = $value; 
}); 

... но более подходящий момент: Зачем вам это нужно?

Похоже, что это очень странное требование, и все, что вам нужно сделать, было бы лучше сделать какой-то другой способ ...

+0

Насколько отличается подход ур с точки зрения скорости от @codaddict – aWebDeveloper

+0

Неизвестный - вероятно, очень сильно зависит от среды, версии PHP и конфигурации сервера. Однако вряд ли это будет иметь практическое значение, если ваш массив не смехотворно большой. [Преждевременная оптимизация - это корень всего зла] (http://c2.com/cgi/wiki?PrematureOptimization), видимо (хотя лично я подозреваю Micro $ oft) – DaveRandom

1

Вы можете использовать array_combine

$arr = array(
'1 fail', 
'2 fail', 
'3 fail', 
'4 fail', 
); 
print_r(array_combine($arr, $arr)); 



Array 
(
    [1 fail] => 1 fail 
    [2 fail] => 2 fail 
    [3 fail] => 3 fail 
    [4 fail] => 4 fail 
) 
Смежные вопросы