Mijn vraag is hoe ik deze array het beste kan opbouwen.
Ik wil dat het nummer en de naam een soort van gekoppeld zijn zodat ik deze later met een foreach kan uitlezen en samen kan tonen
Hoeft niet eens zo ingewikkeld. Zolang je deze velden in paren toevoegt / er altijd evenveel paren zijn kun je het prima doen zoals je in je oorspronkelijke bericht voorstelt. Zolang je validatie daar maar rekening mee houdt. Je loopt door het ene array heen en controleert of de index van de ander bestaat en of de inhoud voldoet aan de regels die voor dat veld gelden.
EDIT: dit wordt mogelijk een ander verhaal als je bestaande informatie wijzigt, mogelijk is deze opgeslagen in een specifiek record (met een specifiek id), dan is het wel zaak om deze te vermelden, maar ook daar hoef je geen extra dimensie toe te voegen maar vul je gewoon een index in in de reeds aanwezige haken om het bijbehorende record bij te kunnen werken.
<?php
foreach ($_POST['number'] as $index => $numberValue) {
// ... doe iets met $numberValue ...
// ... en de bijbehorende name zit in $_POST['name'][$index] ...
}
?>
Veel makkelijker wordt het niet?
item[<index>][<whatever>] kan natuurlijk ook, maar dat is een stuk minder flexibel omdat je dan de hele tijd expliciet indexen moet opgeven (die je ook als teller ergens bij zult moeten houden) ingeval je straks dynamisch items wilt kunnen toevoegen en verwijderen? Dan moet je de hele tijd zitten te klooien met het expliciet instellen van indexen. En je kunt er dan ook niet vanuit gaan dat dit een "sluitende rij" is, want wat als je item 1 t/m 5 hebt, en dan index 3 er tussenuit kiepert? Dan is het toevoegen van een groep velden als number[], name[] of whatever[] toch een stuk makkelijker, en de juiste index en de velden die dan tezamen een item vormen zoek je bij de verwerking wel bij elkaar.