Итак, у меня есть два массива, и я хочу сопоставить 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,
Разместите свой код как обычный текст, а не как изображение. См. форматирование для справки по форматированию кода.
Вы имеете в виду сопоставить 0-е * значение * первого массива с 0-м * значением * второго массива, верно?






Используйте 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;
Вы что-нибудь пробовали? Опубликуйте свои попытки