Как перенести каждый элемент из массива1 объединить массив элементов 2 в новый массив в PHP - PullRequest
0 голосов
/ 04 мая 2018

У меня сложная ситуация. У меня будет массив как

array(
    'title' => array(
        "ABC",
        "DEF",
        "GHI"
    ),
    "url" => array(
        "abc",
        "def",
        "ghi"
    )
);

Теперь я хочу создать новый массив с такими данными, как:

array(
    array(
        "title" => "ABC",
        "url" => "abc",
    ),
    array(
        "title" => "DEF",
        "url" => "def",
    ),
    array(
        "title" => "GHI",
        "url" => "ghi",
    ),
);

Я сделал цикл foreach, но на самом деле у меня более 10 массивов. Я уменьшу производительность, если создам по 10 циклов foreach для каждого из них.

Итак, мой вопрос:

  • Есть ли в PHP какая-либо функция, способная это сделать, или мы должны сделать это сами?

Спасибо за чтение и ответ.

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Вам нужно использовать простые foreach()

$final_array = [];

foreach($array['title'] as $key=>$value){
    $final_array[] = ['title'=>$value,'url'=>$array['url'][$key]];
}

print_r($final_array);

Выход: - https://eval.in/999434

0 голосов
/ 04 мая 2018

Это будет работать динамически с любым количеством подмассивов в вашем основном массиве.
Он использует array_keys, чтобы найти все подмассивы.

$keys = array_keys($arr);
$count = count($arr[$keys[0]]);

For($i=0; $i<$count; $i++){
    Foreach($keys as $key){
        $res[$i][$key] = $arr[$key][$i];
    }
}

Var_dump($res);

https://3v4l.org/41PNh

Пример с тремя подмассивами: https://3v4l.org/5SmSW

0 голосов
/ 04 мая 2018

Возможно ли преобразовать массив в ожидаемый массив?

Да.

Есть ли в PHP какая-либо функция, способная это сделать, или мы должны сделать это сами?

номер

Вы должны зациклить оба массива, используя цикл for, чтобы создать нужный массив.

Пример:

$array = ["a", "b"];
$array2 = ["b", "c"];

$newArray = [];

foreach ($array as $key => $value)
{
    $newArray[$key] = [];
    $newArray[$key]["title"] = $value;
}

foreach ($array2 as $key => $value)
{
    $newArray[$key]["url"] = $value;
}


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