Изменить ключ [0] на [Имя] в массиве php? - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть массив:

[0] => Height: 3/16 
[1] => Color: Standard Red 
[2] => Material: Die-cut, pressure-sensitive paper 

Я хочу удалить эти цифровые ключи (0,1,2) и заменить их строкой перед двумя точками в значениях элементов массива.Таким образом, окончательный результат будет:

[Height] => 3/16 
[Color] => Standard Red 
[Material] => Die-cut, pressure-sensitive paper

Я пытался решить эту проблему с помощью функции array_values, но я не сделал этого, кто-то может мне помочь?

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018
<?php
$input =
[
    'Height: 3/16',
    'Color: Standard Red',
    'Material: Die-cut, pressure-sensitive paper'
];

foreach($input as $v) {
    list($key, $val) = explode(':', $v, 2);
    $output[$key] = trim($val);
}

var_export($output);

Выход:

array (
    'Height' => '3/16',
    'Color' => 'Standard Red',
    'Material' => 'Die-cut, pressure-sensitive paper',
)
0 голосов
/ 24 ноября 2018

Вы можете достичь этого, используя array_reduce для обработки вашего массива.Внутри функции мы используем preg_match, чтобы разбить строку на составные части (заметьте, что вы могли бы просто использовать вместо explode(':', $v) и trim).

$array = array('Height: 3/16',
               'Color: Standard Red',
               'Material: Die-cut, pressure-sensitive paper');
$new_array = array_reduce($array, 
     function ($c, $v) { preg_match('/^([^:]+):\s+(.*)$/', $v, $m); 
                         return array_merge($c, array($m[1] => $m[2]));
                       },
     []);
print_r($new_array);

Вывод:

Array (
    [Height] => 3/16
    [Color] => Standard Red
    [Material] => Die-cut, pressure-sensitive paper
)

Демонстрация на 3v4l.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...