【问题标题】:Concatenate value elements of two or more different arrays in PHP在 PHP 中连接两个或多个不同数组的值元素
【发布时间】:2022-11-25 06:45:55
【问题描述】:

我原来有这个数组

Array
(
    [0] => Amministrativo ^25^9,11,2,10,18,4,7,^17,13,^0.75^0^0.25
    [1] => Logico deduttive^7^^21,^0.75^0^-0.25
    [2] => Situazionali^8^^20,^0.75^0^0.375
)

使用函数 explode 和 array_diff 我可以得到这个

Array
(
    [0] => Amministrativo 
    [1] => 25
    [2] => 9,11,2,10,18,4,7,
    [3] => 17,13,
    [4] => 0.75
    [5] => 0
    [6] => 0.25
)
Array
(
    [0] => Logico deduttive
    [1] => 7
    [2] => 
    [3] => 21,
    [4] => 0.75
    [5] => 0
    [6] => -0.25
)
Array
(
    [0] => Situazionali
    [1] => 8
    [2] => 
    [3] => 20,
    [4] => 0.75
    [5] => 0
    [6] => 0.375
)

但我想连接每个数组的元素以获得一个唯一的数组。我想我需要使用 array_map 函数,但我不知道如何使用。下面是我想要达到的结果

Array (
[0] => Amministrativo Logico deduttive Situazionali
[1] => 25 7 8 
[2] => 9,11,2,10,18,4,7,
[3] => 17,13,21,20,
[4] => 0.75 0.75 0.75
[5] => 0 0 0
[6] => 0.25 -0.25 0.375
)

坦克


编辑: 我尝试了 here 的代码,没问题。 但现在我意识到还有一个问题,即数组可以是可变数字 1、2、3 或更多,我以前不知道,我应该修改这段代码

$result = array_map(function ($item1, $item2,$item3) {
                                return "$item1 $item2 $item3";
                            }, $test[0], $test[1],$test[2]);

【问题讨论】:

标签: php arrays multidimensional-array concatenation transpose


【解决方案1】:

原始数组的行用 explode 拆分。结果是一个二维数组。这是转置的(交换行和列)。然后用内爆重新组装这些线。

function array_transpose(array $a) {
  $r = array();
  foreach($a as $keyRow => $subArr) {
    foreach($subArr as $keyCol => $value) $r[$keyCol][$keyRow] = $value;
  }
  return $r;
}

$arr = [
 'Amministrativo ^25^9,11,2,10,18,4,7,^17,13,^0.75^0^0.25',
 'Logico deduttive^7^^21,^0.75^0^-0.25',
 'Situazionali^8^^20,^0.75^0^0.375',
];
    
foreach($arr as $i => $row){
  $arr[$i] = explode('^',$row);
}

$arr = array_transpose($arr);

foreach($arr as $i => $row){
  $arr[$i] = implode(' ',$row);
}

var_export($arr);

演示:https://3v4l.org/IdsDh

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多