簡體   English   中英

如何組合具有相同元素值的數組

[英]How to combine array with same element value

我的數組數據:

$opt_val = 
    Array
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [0] => 0|0|0|P3D
                        [1] => 0|0|1|P4D
                        [2] => 0|0|2|P5D
                    )
    
                [1] => Array
                    (
                        [0] => 0|1|0|P3D
                        [1] => 0|1|1|P4D
                        [2] => 0|1|2|P5D
                    )
    
            )
    
        [1] => Array
            (
                [0] => Array
                    (
                        [0] => 1|0|0|P3D
                        [1] => 1|0|1|P4D
                        [2] => 1|0|2|P5D
                    )
    
                [1] => Array
                    (
                        [0] => 1|1|0|P3D
                        [1] => 1|1|1|P4D
                        [2] => 1|1|2|P5D
                    )
    
            )
    
    )

我想用結果加入上面的數組:

    Array
    (
        [0] => Array
            (
                [0] => 0|0|0|P3D#0|1|0|P3D (from Array[0][0][0]#Array[0][1][0])
                [1] => 0|0|1|P4D#0|1|1|P4D
                [2] => 0|0|2|P5D#0|1|2|P5D
            )

        [1] => Array
            (
                [0] => 1|0|0|P3D#1|1|0|P3D (from Array[1][0][0]#Array[1][1][0])
                [1] => 1|0|1|P4D#1|1|1|P4D
                [2] => 1|0|2|P5D#1|1|2|P5D
            )

    )

我的代碼

for ($ov = 0; $ov < count($opt_val); $ov++) {
    for ($ovi = 0; $ovi < count($opt_val[$ov]); $ovi++) {
        for ($iv = 0; $iv < count($opt_val[$ov][$iv]); $iv++) {
            $im_opt_val[$iv] = implode("#", $opt_val[$ov][$ovi]);
        }
        $impl_opt_val[$ov] = $im_opt_val;
    }
}

謝謝

下面的代碼片段應該可以解決問題。

<?php

declare(strict_types=1);

$opt_val = [
    [
        [
            '0|0|0|P3D',
            '0|0|1|P4D',
            '0|0|2|P5D',
        ],
        [
            '0|1|0|P3D',
            '0|1|1|P4D',
            '0|1|2|P5D',
        ],
    ],
    [
        [
            '1|0|0|P3D',
            '1|0|1|P4D',
            '1|0|2|P5D',
        ],
        [
            '1|1|0|P3D',
            '1|1|1|P4D',
            '1|1|2|P5D',
        ],
    ],
];

$result = [];
foreach ($opt_val as $outerArrayKey => $outerArray) {
    foreach ($outerArray as $innerArray) {
        foreach ($innerArray as $innerArrayKey => $innerArrayElement) {
            if (!isset($result[$outerArrayKey][$innerArrayKey])) {
                $result[$outerArrayKey][$innerArrayKey] = $innerArrayElement;
            } else {
                $result[$outerArrayKey][$innerArrayKey] .= '#'.$innerArrayElement;
            }
        }
    }
}

var_dump($result);

output 將是:

array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(19) "0|0|0|P3D#0|1|0|P3D"
    [1]=>
    string(19) "0|0|1|P4D#0|1|1|P4D"
    [2]=>
    string(19) "0|0|2|P5D#0|1|2|P5D"
  }
  [1]=>
  array(3) {
    [0]=>
    string(19) "1|0|0|P3D#1|1|0|P3D"
    [1]=>
    string(19) "1|0|1|P4D#1|1|1|P4D"
    [2]=>
    string(19) "1|0|2|P5D#1|1|2|P5D"
  }
}

我希望這對你有用:

$finalFinalArray = [];
foreach($outerArray as $key => $innerArray){
  $finalArray = [];
  $inQueueArray = [];
  foreach ($innerArray as $inInnerArray) {
    $inQueueArray = array_merge($inQueueArray, $inInnerArray);
  }
  // Now, inner array is merged
  for ($i = 0; $i < count($inQueueArray); $i++){
    $finalArray[] = $inQueueArray[$i] + "#" + $inQueueArray[$i+3];
  }
  $finalFinalArray[] = $finalArray;
}
var_dump($finalFinalArray);

沒測試!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM