3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array1 = [ [ 'name' => 'internal_evidence', 'price' => 30, 'course_id' => 3 ], [ 'name' => 'international_evidence', 'price' => 450, 'course_id' => 3 ], [ 'name' => 'internal_evidence', 'price' => 10, 'course_id' => 1 ], [ 'name' => 'technical_evidence', 'price' => 134, 'course_id' => 3 ], ]; $array2 = [ [ 'id' => 3, 'name' => 'graphic', 'price' => 150, 'attr' => [ 'internal_evidence' => 'true', 'international_evidence' => 'false', 'technical_evidence' => 'true' ] ], [ 'id' => 5, 'name' => '3dmax', 'price' => 300, 'attr' => [ ] ], [ 'id' => 1, 'name' => 'ICDL', 'price' => 480, 'attr' => [ 'internal_evidence' => 'true', ] ], ]; $array1ByIdAndName = array_reduce($array1, static function ($byIdAndName, $entry) { $byIdAndName[$entry['course_id']][$entry['name']] = $entry; return $byIdAndName; }); $array2 = array_map(static function ($entry) use ($array1ByIdAndName) { $entry['total_price'] = $entry['price']; $entry['attr'] = array_reduce(array_keys($entry['attr']), static function ($attrs, $attrName) use ($array1ByIdAndName, &$entry) { if ($entry['attr'][$attrName] === 'true') { $attrs[] = $attrName; $entry['total_price'] += $array1ByIdAndName[$entry['id']][$attrName]['price']; } return $attrs; }, []); return $entry; }, $array2); ?> <?php foreach ($array2 as $entry): ?> <h2><?= $entry['name'] ?></h2> <?php foreach ($entry['attr'] as $attrName): ?> <p><?= $attrName ?></p> <?php endforeach ?> <small>course price : <?= $entry['price'] ?></small> <?php if ($entry['total_price'] > 0): ?> <small><?= $entry['total_price'] ?></small> <?php endif ?> <?php endforeach ?>
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
<h2>graphic</h2> <p>internal_evidence</p> <p>technical_evidence</p> <small>course price : 150</small> <small>314</small> <h2>3dmax</h2> <small>course price : 300</small> <small>300</small> <h2>ICDL</h2> <p>internal_evidence</p> <small>course price : 480</small> <small>490</small>

preferences:
138.89 ms | 408 KiB | 5 Q