Сопоставьте 2 массива для создания нужной строки

Итак, у меня есть два массива, и я хочу сопоставить 0-й ключ первого массива с 0-м ключом второго массива, и оба массива могут иметь n ключей, так что конечный результат, который будет строкой, должен выглядеть примерно так, как указано ниже

Array
(
    [0] => 1
    [1] => 2
)

Array
(
    [0] => 5
    [1] => 10
)

Результат--

1:5,2:10

я пробовал это - что дает результат

:1:5,1:10,2:5,2:10,

Сопоставьте 2 массива для создания нужной строки

Вы что-нибудь пробовали? Опубликуйте свои попытки

Rafael 14.09.2018 16:53

Разместите свой код как обычный текст, а не как изображение. См. форматирование для справки по форматированию кода.

Barmar 14.09.2018 17:22

Вы имеете в виду сопоставить 0-е * значение * первого массива с 0-м * значением * второго массива, верно?

ryantxr 14.09.2018 17:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
43
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Используйте array_map и взорваться:

// Function which concats two given strings with ':' and returns
function concatValues($v1,$v2)
{
  return($v1.':'.$v2);
}

// Input arrays
$first_input_array = Array ( [0] => 1 [1] => 2 );
$second_input_array = Array ( [0] => 5 [1] => 10 );

// array_map to concat corresponding values from the two input arrays
$output = array_map('concatValues',
                    array_values($first_input_array), 
                    array_values($second_input_array)
                   );

// Implode to get comma separated string
$output = implode(',', $output);

Чтобы сопоставить его с другим массивом, вы можете сделать это следующим образом:

<?php
    $a1 = [1,2,3,4,5];

    $a2 = [5,4,3,2,1];

    $a3 = [];

    foreach($a1 as $k => $v) {

        $a3[$v] = null;

        if (array_key_exists($k, $a2)) {
            $a3[$v] = $a2[$k];
        }
    }

    print_r($a3);

он получит запрошенную строку, вы можете сделать это так:

<?php
    $a1 = [1,2,3,4,5];

    $a2 = [5,4,3,2,1];

    $a3 = [];

    foreach($a1 as $k => $v) {

        if (array_key_exists($k, $a2)) {
            $a3[] = $v . ':' . $a2[$k];
        }
    }

    echo implode(',', $a3);
Ответ принят как подходящий

Немного многословно, но будет обрабатываться, если оба входных массива имеют 2 разные длины.

<?php

$array_one = [1,2];
$array_two = [5,10];

// Array we work with to push the merged data too,
$array_result = [];

foreach($array_one as $index => $value) {

   $array_result[$index] = $value;

}

foreach($array_two as $index => $value) {

  // If the first number was set from the $array_one iteration then concatenate ':' and this $array_two_value, else simply add this $array_two_value.
  if (isset($array_result[$index])) {
     $array_result[$index] .= ':' . $value;
  }
  else {
    $array_result[$index] .= $value;
  }

}

echo implode(',',$array_result);

Вы создаете вложенные петли, чего вы не хотите здесь делать.

Я предполагаю, что оба массива имеют одинаковое количество элементов, поэтому мы можем сделать простое решение.

$output = '';
if ( count($a1) == count($a2) ) {
    foreach ( $a1 as $i => $val1 ) {
        // put the comma if this is not the first one
        if ( $i > 0 ) $output .= ',';
        $output .= "{$val}:{$a2[$i]}";
    }
}
echo $output;

Другие вопросы по теме