Verstehe.
Also 269 und ersatz_269 stehen in Beziehung.
Also würde auch ABC_XYZ_555 in Beziehung zu 555 stehen - richtig?
Und 269's Offsets (zB 3, 4, 5) müssen runtergedrückt werden, dabei aber die Beziehung zu ersatz_269's Offsets behalten - richtig?
edit:
ich glaub ich habs:
$input = array(
'493' => array(
1 => array(
0 => 12,
1 => 38,
),
),
'ersatz_493' => array(
1 => array(
0 => 43,
1 => 51,
),
),
'269' => array(
10 => array( // zu erwarten auf 0
0 => 40,
1 => 44,
),
20 => array( // zu erwarten auf 1
0 => 14,
1 => 39,
),
30 => array( // zu erwarten auf 2
0 => 14,
1 => 39,
),
40 => array( // zu erwarten auf 3
0 => 14,
1 => 39,
),
),
'ersatz_269' => array(
20 => array( // zu erwarten auf 1
0 => 49,
1 => 50,
),
40 => array( // zu erwarten auf 3
0 => 49,
1 => 50,
),
),
);
echo 'Vorher:' . PHP_EOL;
print_r($input);
function getFieldNameKey($key){
// hier die erkennung
preg_match('/[0-9]+/', $key, $matches);
return $matches[0];
}
$relations = array();
foreach($input as $fieldName => &$fields){
$fieldsSorted = array();
$newKey = 0;
foreach($fields as $oldKey => $field){
$relationKey = getFieldNameKey($fieldName);
if(isset($relations[$relationKey][$oldKey])){
$fieldsSorted[$relations[$relationKey][$oldKey]] = $field;
}
else{
$fieldsSorted[$newKey] = $field;
$relations[$relationKey][$oldKey] = $newKey;
$newKey++;
}
}
$fields = $fieldsSorted;
}
echo 'Nachher:' . PHP_EOL;
print_r($input);
echo '$relations:' . PHP_EOL;
print_r($relations);
Alles anzeigen
out:
Vorher:
Array
(
[493] => Array
(
[1] => Array
(
[0] => 12
[1] => 38
)
)
[ersatz_493] => Array
(
[1] => Array
(
[0] => 43
[1] => 51
)
)
[269] => Array
(
[10] => Array
(
[0] => 40
[1] => 44
)
[20] => Array
(
[0] => 14
[1] => 39
)
[30] => Array
(
[0] => 14
[1] => 39
)
[40] => Array
(
[0] => 14
[1] => 39
)
)
[ersatz_269] => Array
(
[20] => Array
(
[0] => 49
[1] => 50
)
[40] => Array
(
[0] => 49
[1] => 50
)
)
)
Nachher:
Array
(
[493] => Array
(
[0] => Array
(
[0] => 12
[1] => 38
)
)
[ersatz_493] => Array
(
[0] => Array
(
[0] => 43
[1] => 51
)
)
[269] => Array
(
[0] => Array
(
[0] => 40
[1] => 44
)
[1] => Array
(
[0] => 14
[1] => 39
)
[2] => Array
(
[0] => 14
[1] => 39
)
[3] => Array
(
[0] => 14
[1] => 39
)
)
[ersatz_269] => Array
(
[1] => Array
(
[0] => 49
[1] => 50
)
[3] => Array
(
[0] => 49
[1] => 50
)
)
)
$relations:
Array
(
[493] => Array
(
[1] => 0
)
[269] => Array
(
[10] => 0
[20] => 1
[30] => 2
[40] => 3
)
)
Alles anzeigen