Search code examples
phpoptimizationredundancy

Redundant parts of code


I'm writing a small .php code, the idea is similar to this:

We have 2 Persons, Person A and Person B, and 8 fields of data, 4 for each person (order, name, role, pic). The example of data:

Person A:

  • order: 1
  • name: Alex
  • role: Customer
  • pic: alex.jpg

Person B:

  • order: 2
  • name: Felix
  • role: Supplier
  • pic: felix.jpg

The idea of order field is to determine which person should be displayed first on the page. According to the example, Person A should be displayed first, but the order may be different. Person B may have 0 order, and then Person B should be first.

I've achieved the result, by writing this code:

$first_person_order = // here I get order for Person A;
$second_person_order = // here I get order for Person B;

$first_person_name;
$first_person_role;
$first_person_pic;

$second_person_name;
$second_person_role;
$second_person_pic;

if ($first_person_order < $second_person_order) {
    $first_person_name = // here I get name for Person A;
    $first_person_role = // here I get role for Person A;
    $first_person_pic = // here I get pic for Person A;
    $second_person_name = // here I get name for Person B;
    $second_person_role = // here I get role for Person B;
    $second_person_pic = // here I get pic for Person B;
} else {
    $first_person_name =  // here I get name for Person B;
    $first_person_role = // here I get role for Person B;
    $first_person_pic = // here I get pic for Person B;
    $second_person_name = // here I get name for Person A;
    $second_person_role = // here I get role for Person A;
    $second_person_pic = // here I get pic for Person A;
}

But I've a feeling this is not a good solution, it looks very redundant, but I really have no idea how to make it better due to my poor PHP knowledge! I would be extremely happy to get any sort of help / solutions. Thank you!


Solution

  • Use arrays where the index is the order number.

    $pers = [];
    $pers[$first_person_order] = array($first_person_name,$first_person_role,$first_person_pic);
    $pers[$second_person_order] = array($second_person_name,$second_person_role,$second_person_pic);
    

    When you need to echo them, traverse the array. They will be in order.

    $arrlength = count($pers);
    for($x = 0; $x < $arrlength; $x++) {
        echo $pers[$x][1];
    }