2016-01-11 3 views
-3

Я пытаюсь преобразовать массив PHP из одного формата в другой.Изменение формата массива PHP от одного к другому

Мой массив выглядит следующим образом:

array (size=5) 
    0 => 
    array (size=2) 
     'name' => string 'userName' (length=8) 
     'value' => string 'thename' (length=7) 
    1 => 
    array (size=2) 
     'name' => string 'email' (length=5) 
     'value' => string '[email protected]' (length=15) 
    2 => 
    array (size=2) 
     'name' => string 'password' (length=8) 
     'value' => string 'thepassword' (length=11) 
    3 => 
    array (size=2) 
     'name' => string 'confirmPassword' (length=15) 
     'value' => string 'thepassword' (length=11) 
    4 => 
    array (size=2) 
     'name' => string 'postcode' (length=8) 
     'value' => string 'postcode' (length=8) 

И мне нужно заново отформатировать его в этом:

array("userName" => "thename", 
     "email" => "[email protected]", 
     "password" => "thepassword", 
     "confirmPassword" => "thepassword", 
     "postcode" => "postcode" 
    ); 

Я просто не могу понять это .. Пожалуйста, помогите :)

+0

trt петля foreach. –

+0

ненавистники ненавидят ... – zachu

ответ

3

Начиная с версии 5.5, PHP имеет замечательную встроенную функцию под названием array_column(), что позволяет сделать

$newArray = array_column($array, 'value', 'name'); 
+0

Отличное решение! Благодаря! – schellingerht

+0

Это замечательно! Большое спасибо ! – zachu

0

Этот тип проблемы возникает каждый день. Зачем подчеркивать поиск специализированной функции для выполнения задания, когда очень просто перебрать исходный массив и создать новый?

// Assume $old_array is the one you have that you are working with 
$new_array = array(); 
foreach($old_array as $a) 
    $new_array[$a['name']] = $a['value']; 

Все, что нужно. $ New_array имеет имя из исходного массива в индексах и значение из исходного массива в значениях.

0

Фрагмент кода:

$result = array(); 
foreach($orig as $def) { 
    $result[$def['name']] = $def['value']; 
} 

Вот полный пример:

$orig = array (
    array (
     'name' => 'userName', 
     'value' => 'thename', 
    ), 
    array (
     'name' => 'email', 
     'value' => '[email protected]', 
    ), 
    array (
     'name' => 'password', 
     'value' => 'thepassword', 
    ), 
    array (
     'name' => 'confirmPassword', 
     'value' => 'thepassword', 
    ), 
    array (
     'name' => 'postcode', 
     'value' => 'postcode', 
    ), 
); 

$result = array(); 
foreach($orig as $def) { 
    $result[$def['name']] = $def['value']; 
} 

echo '<pre>'.PHP_EOL; 
echo '<h3>Original Array</h3>'.PHP_EOL; 
var_dump($orig); 
echo '<h3>Resulting Array</h3>'.PHP_EOL; 
var_dump($result); 
echo '</pre>'.PHP_EOL; 
Смежные вопросы