сделать массив из 2 массивов - PullRequest
0 голосов
/ 05 июля 2018

У меня есть это:

$Array1 = "FirstName, LastName, Email";
$Array2 = "John, Doe, johndoe@email.com";

Используя foreach или другие средства, может ли окончательный формат массива выглядеть следующим образом?

$mergedArrays = array(
    'FirstName'        =>"John",
    'LastName'     => "Doe",
    'Email'       =>'johndoe@email.com',
);

print_r($mergedArrays);

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Если вы должны использовать foreach (где будет работать array_combine):

<?php

$fields = ['FirstName', 'LastName', 'Email'];
$values = ['John', 'Doe', 'johndoe@email.com'];

foreach($fields as $k => $field)
    $result[$field] = $values[$k];

var_export($result);

Выход:

array (
    'FirstName' => 'John',
    'LastName' => 'Doe',
    'Email' => 'johndoe@email.com',
)
0 голосов
/ 05 июля 2018

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

Версия 1 (тестирование с 100000 занимает ~ 0,08 с, + -4 раза быстрее)

<?php
$Array1 = "FirstName, LastName, Email";
$Array2 = "John, Doe, johndoe@email.com";

$Array1 = explode(',', preg_replace('/\s*,\s*/',',',$Array1)); //remove spaces before and after comma
$Array2 = explode(',', preg_replace('/\s*,\s*/',',',$Array2));

if(count($Array1) == count($Array2)) {
    $result = array_combine($Array1, $Array2);
}

print_r($result);

Выход:

Array (
    [FirstName] => John
    [LastName] => Doe
    [Email] => johndoe@email.com
)

Альтернативная версия от @castis (тестирование с 100000 занимает ~ 0,3 с)

$Array1 = explode(',',$Array1);
$Array2 = explode(',',$Array2);

$result = array_combine(array_map('trim', $Array1), array_map('trim', $Array2));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...