I am trying to make an array with forms linked to street names. To make sure the form is only once added to the array I loop thru it. Based on form id I either add id, name, percentage, and streets to the array $projectForms or only add the street if the id already exists in $projectForms.
The code:
$projectForms = [
'projectName' => $projectName,
'forms' => []
];
foreach ($houses as $house) {
foreach ($house['forms'] as $form) {
if (!$projectForms['forms']) {
array_push($projectForms['forms'], array('id' => $form['id'], 'name' => $form['name'], 'percentage' => $form['percentage'], 'streets' => array($house['fullStreet'])));
} else {
foreach ($projectForms['forms'] as $key => $value) {
if ($projectForms['forms'][$key]['id'] === $form['id']) {
array_push($projectForms['forms'][$key]['streets'], $house['fullStreet']);
} else if ($projectForms['forms'][$key]['id'] !== $form['id']) {
array_push($projectForms['forms'], array('id' => $form['id'], 'name' => $form['name'], 'percentage' => $form['percentage'], 'streets' => array($house['fullStreet'])));
}
}
}
}
}
dd($projectForms['forms']);
//Return to the view
dd($projectForms);
return view('example')->with(['projectForms' => $projectForms]);
dd $houses:
array:6 [▼
0 => array:3 [▼
"id" => 97641
"fullStreet" => "SomeStreet 1"
"forms" => array:1 [▼
0 => array:3 [▼
"id" => 2456
"name" => "Some name"
"percentage" => 6.6666666666667
]
]
]
1 => array:3 [▼
"id" => 97642
"fullStreet" => "SomeStreet 2"
"forms" => array:1 [▼
0 => array:3 [▼
"id" => 2456
"name" => "Some Name"
"percentage" => 6.6666666666667
]
]
]
2 => array:3 [▼
"id" => 97643
"fullStreet" => "SomeStreet 3"
"forms" => array:1 [▼
0 => array:3 [▼
"id" => 2456
"name" => "Some Name"
"percentage" => 6.6666666666667
]
]
]
3 => array:3 [▼
"id" => 97644
"fullStreet" => "SomeStreet 4"
"forms" => array:1 [▼
0 => array:3 [▼
"id" => 2456
"name" => "Some Name"
"percentage" => 6.6666666666667
]
]
]
4 => array:3 [▼
"id" => 97645
"fullStreet" => "SomeStreet 5"
"forms" => array:1 [▼
0 => array:3 [▼
"id" => 2489
"name" => "Some name"
"percentage" => 3.3333333333333
]
]
]
5 => array:3 [▼
"id" => 97646
"fullStreet" => "SomeStreet 6"
"forms" => array:1 [▼
0 => array:3 [▼
"id" => 2489
"name" => "Some Name"
"percentage" => 3.3333333333333
]
]
]
]
dd $projectForms when done:
array:3 [▼
0 => array:4 [▼
"id" => 2456
"name" => "Some Name"
"percentage" => 6.6666666666667
"streets" => array:4 [▼
0 => "Some Street 1"
1 => "Some Street 2"
2 => "Some Street 3"
3 => "Some Street 4"
]
]
1 => array:4 [▼
"id" => 2489
"name" => "Some Name"
"percentage" => 3.3333333333333
"streets" => array:2 [▼
0 => "Some Street 5"
1 => "Some Street 6"
]
]
2 => array:4 [▼
"id" => 2489
"name" => "Some Name"
"percentage" => 3.3333333333333
"streets" => array:1 [▼
0 => "Some Street 6"
]
]
]
So as you can see in the dd from $projectForms Some Street 6 is added twice even though the id is used before. I am wondering what I can do to make my code only add it once.
Aucun commentaire:
Enregistrer un commentaire