John Davidson

remove duplication of records in foreach loop in php and cakephp

0 comments
Message:


I need help with how to remove the duplication within list of countries based on country_id.


I have a table which includes many projects for a country and counting the projects number which is working fine but need to print without duplication, only one country_id with the count of its project.


The code has been added - if anyone can help it is appreciated


<table>
<tr>
<th>Country ID</th>
<th>Country Name</th>
<th>Number of Place</th>
</tr>

<?php
$country_counts = [];
foreach ($projects as $project) {
$country_id = $project['Project']['country_id'];
if (isset($country_counts[$country_id])) {
$country_counts[$country_id]++;
?>
<tr>
<td style="width: 30%"><?php echo $project['Project']['country_id']; ?></td>
<td style="width: 30%"><?php echo 'Country Name'; ?></td>
<td style="width: 30%"><?php echo $country_counts[$project['Project']['country_id']]; ?></td>
</tr>
<?php
} else {
$country_counts[$country_id] = 1;
}
}
?>

</table>

the result which i got is
shows the result



My Answer:
To remove duplication of records in a foreach loop in PHP and CakePHP, you can use an array to keep track of the unique country_ids that have already been processed. Here's an example of how you can achieve this:

php
// Assuming $projects is an array of projects with country_id as one of the fields

$uniqueCountries = array();
foreach ($projects as $project) {
$countryId = $project['country_id'];

// Check if the country_id has already been processed
if (!in_array($countryId, $uniqueCountries)) {
$uniqueCountries[] = $countryId;

// Count the number of projects for this country
$projectCount = count(array_filter($projects, function($p) use ($countryId) {
return $p['country_id'] == $countryId;
}));

// Print the country_id and project count
echo "Country ID: $countryId, Project Count: $projectCount" . PHP_EOL;
}
}


In this code snippet, we use the `$uniqueCountries` array to keep track of the unique country_ids that have already been processed. We then check if the current country_id has already been processed before counting the number of projects for that country and printing the result.

This approach ensures that each country_id is only processed once and prevents duplication in the output.

Rate this post

4 of 5 based on 4444 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us