Web

Преобразовать разделенных двоеточиями массив ключ: значение в массив с ключами

Имеется такой массив:

[

  "icon: fas fa-toolbox",

  "read-friendly: Mix Fixes"

]

 

Я хочу преобразовать его в это:

{

  "icon": "fas fa-toolbox",

  "read-friendly": "Mix Fixes"

}

 

Как лучше всего это сделать?

Пробовал сделать, получил ключи, но их значения неверны:

$settings = collect(\array_slice($lines, 0, $blank))->map(static function ($value) {

    $value = explode(':', $value);

    return ['key' => trim($value[0]), 'value' => trim($value[1])];

});

$settings = $settings->keyBy('key');

 

Ответ 1

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

$lines = [

    "icon: fas fa-toolbox",

    "read-friendly: Mix Fixes"

];

 

$settings = [];

 

foreach($lines as $value) {

    $value = explode(':', $value);

    $settings[trim($value[0])]  = trim($value[1]);

}

 

Ответ 2

Выкладываю свой вариант, так как он устраняет необходимость в отдельном массиве

$myArray = [

  "icon: fas fa-toolbox",

  "read-friendly: Mix Fixes"

];

 

// Итерация по массиву, где $i - индекс, а $slice – значение

foreach($myArray as $i => $slice){

    // Разбить строку разделителем ':'

    $exploded = explode(':', $slice);

    // Установите ключ в качестве первой части разобранной строки,

    // а значение - в качестве второй, и удалить лишние пробелы

    $myArray[$exploded[0]] = trim($exploded[1]);

    //Удалить исходный фрагмент из массива

    unset($myArray[$i]);

}

 

var_export($myArray);

 

Результат:

array (

  'icon' => 'fas fa-toolbox',

  'read-friendly' => 'Mix Fixes',

)

Схожие статьи

Web

Как завершить сеанс PHP через 30 минут?

Web

Как я могу хранить и извлекать изображения из базы данных MySQL с помощью PHP

Web

Как я могу обезопасить вводимые пользователем данные с помощью PHP?

Web

Как сохранить изображение PNG на стороне сервера из URI данных base64