Объедините два массива в строку - PullRequest
0 голосов
/ 06 сентября 2018

Мне нужно создать новый массив с именем ar1 с элементами: [Dublin, Budapest, Copenhagen] и ar2 с [Ирландия, Венгрия, Дания], а затем ответить строкой, содержащей каждую страну из массива countries, за которым следуетсоответствующей столицей.Используйте формат "country = capital, * country = capital..."

Проверьте код ниже, но я знаю, что это еще один способ сделать это ex.Для цикла, но может кто-нибудь объяснить мне, как?

$ar1 = ["Dublin", "Budapest", "Copenhagen"];
$ar2 = ["Ireland", "Hungary", "Denmark"];
$ANSWER = $ar2[0] . " = " . $ar1[0] . ", " . $ar2[1] . " = " . $ar1[1]. ", " . $ar2[2] . " = " . $ar1[2];

Ответы [ 4 ]

0 голосов
/ 06 сентября 2018

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

$transposed = array_map(null, $ar1, $ar2);

После того, как они объединены, гораздо проще получить требуемый результат:

echo implode(', ', array_map(function($row) {
    return "{$row[1]} = {$row[0]}";
}, $transposed));

Ирландия = Дублин, Венгрия = Будапешт, Дания = Копенгаген

См. https://3v4l.org/LfvIY

0 голосов
/ 06 сентября 2018

Еще один способ сделать это, используя array_combine()

<?php
$ar1 = ["Dublin", "Budapest", "Copenhagen"];
$ar2 = ["Ireland", "Hungary", "Denmark"];
$result = array_combine($ar2,$ar1);

$ANSWER = '';
$i = 0;
$comma = ', ';
$len = count($result);
foreach($result as $country => $capital) {
    if ($i == $len - 1){
        $comma='';
    }
    $ANSWER .= $country . ' = ' . $capital.$comma;
    $i++;
}

echo $ANSWER;

ДЕМО: https://3v4l.org/WGtJ3

Использование array_map()

$ar1 = ["Dublin", "Budapest", "Copenhagen"];
$ar2 = ["Ireland", "Hungary", "Denmark"];
$input = array_combine($ar2,$ar1);
$output = implode(', ', array_map(
    function ($v, $k) { return sprintf("%s=%s", $k, $v); },
    $input,
    array_keys($input)
));

echo $output;

DEMO: https://3v4l.org/qps1G

0 голосов
/ 06 сентября 2018

Более быстрый и простой способ:

$countries=["Ireland", "Hungary", "Denmark"];
 $capitals=["Dublin", "Budapest", "Copenhagen"];
 $string=implode(',',array_map(function($country,$capital){ return "$country=$capital";},$countries,$capitals));
 var_dump($string);

выход:

string(50) "Ireland=Dublin,Hungary=Budapest,Denmark=Copenhagen"
0 голосов
/ 06 сентября 2018

Вы должны использовать foreach и key.

$ar1 = ["Dublin", "Budapest", "Copenhagen"];
$ar2 = ["Ireland", "Hungary", "Denmark"];
$ANSWER = '';
foreach($ar1 as $key => $capital) {
    $ANSWER .= $ar2[$key] . ' = ' . $capital . ', ';
}
echo rtrim($ANSWER, ', ');

... а затем rtrim, чтобы удалить последний ,.

https://3v4l.org/f8PJN

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