fork(1) download
  1. <?php
  2.  
  3. /* This is a test assignment
  4. Assignment: Filter Employees by Salary Range and Sort by Hire Date
  5. Objective:
  6. You are given a JSON string containing employee data with name, salary, and hire_date.
  7. Write a PHP function that:
  8. -> Filters employees with salaries in a specified range (e.g., $40,000 to $90,000).
  9. -> Sorts them by hire date in ascending order.
  10. -> Returns a comma-separated list of employee names with hire dates.
  11.   eg. David Jones (2017, October 22)
  12.   Emily White (2018, April 12)
  13. */
  14. $json_data = '{
  15. "18719": {"name": "John Doe", "salary": 75000, "hire_date": "2019, May 01"},
  16. "18720": {"name": "Jane Smith", "salary": 45000, "hire_date": "2021, January 15"},
  17. "18721": {"name": "David Jones", "salary": 60000, "hire_date": "2017, October 22"},
  18. "18722": {"name": "Susan Green", "salary": 95000, "hire_date": "2015, August 05"},
  19. "18723": {"name": "Michael Lee", "salary": 30000, "hire_date": "2020, November 10"},
  20. "18724": {"name": "Emily White", "salary": 80000, "hire_date": "2018, April 12"},
  21. "18725": {"name": "Robert Brown", "salary": 68000, "hire_date": "2016, December 14"},
  22. "18726": {"name": "Sophia Harris", "salary": 72000, "hire_date": "2022, March 18"},
  23. "18727": {"name": "William Clark", "salary": 54000, "hire_date": "2021, July 07"},
  24. "18728": {"name": "Olivia Lewis", "salary": 46000, "hire_date": "2019, August 19"},
  25. "18729": {"name": "Liam Walker", "salary": 62000, "hire_date": "2018, February 25"},
  26. "18730": {"name": "Mia Martinez", "salary": 53000, "hire_date": "2020, September 30"},
  27. "18731": {"name": "Noah Wilson", "salary": 70000, "hire_date": "2017, June 11"},
  28. "18732": {"name": "Emma Robinson", "salary": 48000, "hire_date": "2016, April 05"},
  29. "18733": {"name": "Lucas Scott", "salary": 59000, "hire_date": "2019, November 20"}
  30. }';
  31.  
  32. // result:
  33.  
  34. function sortBySalary($json_data, $direction_sens, $salary_limit = 0) {
  35. $arrJSON = json_decode($json_data, JSON_AS_ARRAY);
  36. //var_dump(array_values($arrJSON));
  37. $arrSalary = array();
  38. foreach($arrJSON as $k => $v) {
  39. //foreach($v as $k2 => $v2) {
  40. // print_r($v2);
  41. if ((int)$v['salary'] > 60000 and $salary_limit != 0) { continue; }
  42. $arrSalary[$v['salary']] = array(
  43. 'name' => $v['name'],
  44. 'salary' => $v['salary'],
  45. 'hire_date' => $v['hire_date'],
  46. 'json_key_id' => $k
  47. );
  48. //}
  49. }
  50.  
  51. //var_dump($arrSalary);
  52. $arrSalarySortByDESC = $arrSalary;
  53. ksort($arrSalarySortByDESC, SORT_NUMERIC);
  54. //var_dump($arrSalarySortByDESC);
  55.  
  56. $out = '';
  57. if ($direction_sens == 'desc') {
  58. $i = count($arrSalarySortByDESC);
  59. foreach ($arrSalarySortByDESC as $k2 => $v2) {
  60. $out .= $v2['name'] . ' est numéro #' . $i . ' au classement avec un salaire de $' . (string)$v2['salary'];
  61. $out .= "\n" . '(' . "\n" . 'autres informations concernant l\'employé(e) ' . $v2['name'] . "\n"
  62. . ' >> name=' . $v2['name']
  63. . ' ; salary=' . $v2['salary']
  64. . ' ; hire_date=' . $v2['hire_date']
  65. . ' ; json_key_id=' . $v2['json_key_id'] . "\n" . ')' . "\n";
  66. $i--;
  67. }
  68. }
  69. if ($direction_sens == 'asc') {
  70. $i = 0;
  71. foreach ($arrSalarySortByDESC as $k2 => $v2) {
  72. $i++;
  73. $out .= $v2['name'] . ' est numéro #' . $i . ' au classement avec un salaire de $' . (string)$v2['salary'];
  74. $out .= "\n" . '(' . "\n" . 'autres informations concernant l\'employé(e) ' . $v2['name'] . "\n"
  75. . ' >> name=' . $v2['name']
  76. . ' ; salary=' . $v2['salary']
  77. . ' ; hire_date=' . $v2['hire_date']
  78. . ' ; json_key_id=' . $v2['json_key_id'] . "\n" . ')' . "\n";
  79. }
  80. }
  81. return($out);
  82. }
  83.  
  84. echo "------ Sort By Salary (DESCENDING) ------" . "\n";
  85. echo "¤¤¤ L'employé(e) avec le moins de thunes gagné descend au classement" . "\n";
  86. echo "----------------------------------------" . "\n";
  87. echo sortBySalary($json_data, 'desc');
  88.  
  89. echo "\n\n\n";
  90.  
  91. echo "------ Sort By Salary (ASCENDING) ------" . "\n";
  92. echo "¤¤¤ L'employé(e) avec le moins de thunes gagné monte au classement" . "\n";
  93. echo "----------------------------------------" . "\n";
  94. echo sortBySalary($json_data, 'asc');
  95.  
  96. echo "\n\n\n";
  97.  
  98. echo "------ Sort By Salary (DESCENDING) (limit: $60000) ------" . "\n";
  99. echo "¤¤¤ L'employé(e) avec le moins de thunes gagné descend au classement, max jusqu'à $60000" . "\n";
  100. echo "----------------------------------------" . "\n";
  101. echo sortBySalary($json_data, 'desc', 60000);
  102.  
  103. echo "\n\n\n";
  104.  
  105. echo "------ Sort By Salary (ASCENDING) (limit: $60000) ------" . "\n";
  106. echo "¤¤¤ L'employé(e) avec le moins de thunes gagné monte au classement, max jusqu'à $60000" . "\n";
  107. echo "----------------------------------------" . "\n";
  108. echo sortBySalary($json_data, 'asc', 60000);
Success #stdin #stdout #stderr 0.02s 25988KB
stdin
Standard input is empty
stdout
------ Sort By Salary (DESCENDING) ------
¤¤¤ L'employé(e) avec le moins de thunes gagné descend au classement
----------------------------------------
Michael Lee est numéro #15 au classement avec un salaire de $30000
(
autres informations concernant l'employé(e) Michael Lee
 >> name=Michael Lee ; salary=30000 ; hire_date=2020, November 10 ; json_key_id=18723
)
Jane Smith est numéro #14 au classement avec un salaire de $45000
(
autres informations concernant l'employé(e) Jane Smith
 >> name=Jane Smith ; salary=45000 ; hire_date=2021, January 15 ; json_key_id=18720
)
Olivia Lewis est numéro #13 au classement avec un salaire de $46000
(
autres informations concernant l'employé(e) Olivia Lewis
 >> name=Olivia Lewis ; salary=46000 ; hire_date=2019, August 19 ; json_key_id=18728
)
Emma Robinson est numéro #12 au classement avec un salaire de $48000
(
autres informations concernant l'employé(e) Emma Robinson
 >> name=Emma Robinson ; salary=48000 ; hire_date=2016, April 05 ; json_key_id=18732
)
Mia Martinez est numéro #11 au classement avec un salaire de $53000
(
autres informations concernant l'employé(e) Mia Martinez
 >> name=Mia Martinez ; salary=53000 ; hire_date=2020, September 30 ; json_key_id=18730
)
William Clark est numéro #10 au classement avec un salaire de $54000
(
autres informations concernant l'employé(e) William Clark
 >> name=William Clark ; salary=54000 ; hire_date=2021, July 07 ; json_key_id=18727
)
Lucas Scott est numéro #9 au classement avec un salaire de $59000
(
autres informations concernant l'employé(e) Lucas Scott
 >> name=Lucas Scott ; salary=59000 ; hire_date=2019, November 20 ; json_key_id=18733
)
David Jones est numéro #8 au classement avec un salaire de $60000
(
autres informations concernant l'employé(e) David Jones
 >> name=David Jones ; salary=60000 ; hire_date=2017, October 22 ; json_key_id=18721
)
Liam Walker est numéro #7 au classement avec un salaire de $62000
(
autres informations concernant l'employé(e) Liam Walker
 >> name=Liam Walker ; salary=62000 ; hire_date=2018, February 25 ; json_key_id=18729
)
Robert Brown est numéro #6 au classement avec un salaire de $68000
(
autres informations concernant l'employé(e) Robert Brown
 >> name=Robert Brown ; salary=68000 ; hire_date=2016, December 14 ; json_key_id=18725
)
Noah Wilson est numéro #5 au classement avec un salaire de $70000
(
autres informations concernant l'employé(e) Noah Wilson
 >> name=Noah Wilson ; salary=70000 ; hire_date=2017, June 11 ; json_key_id=18731
)
Sophia Harris est numéro #4 au classement avec un salaire de $72000
(
autres informations concernant l'employé(e) Sophia Harris
 >> name=Sophia Harris ; salary=72000 ; hire_date=2022, March 18 ; json_key_id=18726
)
John Doe est numéro #3 au classement avec un salaire de $75000
(
autres informations concernant l'employé(e) John Doe
 >> name=John Doe ; salary=75000 ; hire_date=2019, May 01 ; json_key_id=18719
)
Emily White est numéro #2 au classement avec un salaire de $80000
(
autres informations concernant l'employé(e) Emily White
 >> name=Emily White ; salary=80000 ; hire_date=2018, April 12 ; json_key_id=18724
)
Susan Green est numéro #1 au classement avec un salaire de $95000
(
autres informations concernant l'employé(e) Susan Green
 >> name=Susan Green ; salary=95000 ; hire_date=2015, August 05 ; json_key_id=18722
)



------ Sort By Salary (ASCENDING) ------
¤¤¤ L'employé(e) avec le moins de thunes gagné monte au classement
----------------------------------------
Michael Lee est numéro #1 au classement avec un salaire de $30000
(
autres informations concernant l'employé(e) Michael Lee
 >> name=Michael Lee ; salary=30000 ; hire_date=2020, November 10 ; json_key_id=18723
)
Jane Smith est numéro #2 au classement avec un salaire de $45000
(
autres informations concernant l'employé(e) Jane Smith
 >> name=Jane Smith ; salary=45000 ; hire_date=2021, January 15 ; json_key_id=18720
)
Olivia Lewis est numéro #3 au classement avec un salaire de $46000
(
autres informations concernant l'employé(e) Olivia Lewis
 >> name=Olivia Lewis ; salary=46000 ; hire_date=2019, August 19 ; json_key_id=18728
)
Emma Robinson est numéro #4 au classement avec un salaire de $48000
(
autres informations concernant l'employé(e) Emma Robinson
 >> name=Emma Robinson ; salary=48000 ; hire_date=2016, April 05 ; json_key_id=18732
)
Mia Martinez est numéro #5 au classement avec un salaire de $53000
(
autres informations concernant l'employé(e) Mia Martinez
 >> name=Mia Martinez ; salary=53000 ; hire_date=2020, September 30 ; json_key_id=18730
)
William Clark est numéro #6 au classement avec un salaire de $54000
(
autres informations concernant l'employé(e) William Clark
 >> name=William Clark ; salary=54000 ; hire_date=2021, July 07 ; json_key_id=18727
)
Lucas Scott est numéro #7 au classement avec un salaire de $59000
(
autres informations concernant l'employé(e) Lucas Scott
 >> name=Lucas Scott ; salary=59000 ; hire_date=2019, November 20 ; json_key_id=18733
)
David Jones est numéro #8 au classement avec un salaire de $60000
(
autres informations concernant l'employé(e) David Jones
 >> name=David Jones ; salary=60000 ; hire_date=2017, October 22 ; json_key_id=18721
)
Liam Walker est numéro #9 au classement avec un salaire de $62000
(
autres informations concernant l'employé(e) Liam Walker
 >> name=Liam Walker ; salary=62000 ; hire_date=2018, February 25 ; json_key_id=18729
)
Robert Brown est numéro #10 au classement avec un salaire de $68000
(
autres informations concernant l'employé(e) Robert Brown
 >> name=Robert Brown ; salary=68000 ; hire_date=2016, December 14 ; json_key_id=18725
)
Noah Wilson est numéro #11 au classement avec un salaire de $70000
(
autres informations concernant l'employé(e) Noah Wilson
 >> name=Noah Wilson ; salary=70000 ; hire_date=2017, June 11 ; json_key_id=18731
)
Sophia Harris est numéro #12 au classement avec un salaire de $72000
(
autres informations concernant l'employé(e) Sophia Harris
 >> name=Sophia Harris ; salary=72000 ; hire_date=2022, March 18 ; json_key_id=18726
)
John Doe est numéro #13 au classement avec un salaire de $75000
(
autres informations concernant l'employé(e) John Doe
 >> name=John Doe ; salary=75000 ; hire_date=2019, May 01 ; json_key_id=18719
)
Emily White est numéro #14 au classement avec un salaire de $80000
(
autres informations concernant l'employé(e) Emily White
 >> name=Emily White ; salary=80000 ; hire_date=2018, April 12 ; json_key_id=18724
)
Susan Green est numéro #15 au classement avec un salaire de $95000
(
autres informations concernant l'employé(e) Susan Green
 >> name=Susan Green ; salary=95000 ; hire_date=2015, August 05 ; json_key_id=18722
)



------ Sort By Salary (DESCENDING) (limit: $60000) ------
¤¤¤ L'employé(e) avec le moins de thunes gagné descend au classement, max jusqu'à $60000
----------------------------------------
Michael Lee est numéro #8 au classement avec un salaire de $30000
(
autres informations concernant l'employé(e) Michael Lee
 >> name=Michael Lee ; salary=30000 ; hire_date=2020, November 10 ; json_key_id=18723
)
Jane Smith est numéro #7 au classement avec un salaire de $45000
(
autres informations concernant l'employé(e) Jane Smith
 >> name=Jane Smith ; salary=45000 ; hire_date=2021, January 15 ; json_key_id=18720
)
Olivia Lewis est numéro #6 au classement avec un salaire de $46000
(
autres informations concernant l'employé(e) Olivia Lewis
 >> name=Olivia Lewis ; salary=46000 ; hire_date=2019, August 19 ; json_key_id=18728
)
Emma Robinson est numéro #5 au classement avec un salaire de $48000
(
autres informations concernant l'employé(e) Emma Robinson
 >> name=Emma Robinson ; salary=48000 ; hire_date=2016, April 05 ; json_key_id=18732
)
Mia Martinez est numéro #4 au classement avec un salaire de $53000
(
autres informations concernant l'employé(e) Mia Martinez
 >> name=Mia Martinez ; salary=53000 ; hire_date=2020, September 30 ; json_key_id=18730
)
William Clark est numéro #3 au classement avec un salaire de $54000
(
autres informations concernant l'employé(e) William Clark
 >> name=William Clark ; salary=54000 ; hire_date=2021, July 07 ; json_key_id=18727
)
Lucas Scott est numéro #2 au classement avec un salaire de $59000
(
autres informations concernant l'employé(e) Lucas Scott
 >> name=Lucas Scott ; salary=59000 ; hire_date=2019, November 20 ; json_key_id=18733
)
David Jones est numéro #1 au classement avec un salaire de $60000
(
autres informations concernant l'employé(e) David Jones
 >> name=David Jones ; salary=60000 ; hire_date=2017, October 22 ; json_key_id=18721
)



------ Sort By Salary (ASCENDING) (limit: $60000) ------
¤¤¤ L'employé(e) avec le moins de thunes gagné monte au classement, max jusqu'à $60000
----------------------------------------
Michael Lee est numéro #1 au classement avec un salaire de $30000
(
autres informations concernant l'employé(e) Michael Lee
 >> name=Michael Lee ; salary=30000 ; hire_date=2020, November 10 ; json_key_id=18723
)
Jane Smith est numéro #2 au classement avec un salaire de $45000
(
autres informations concernant l'employé(e) Jane Smith
 >> name=Jane Smith ; salary=45000 ; hire_date=2021, January 15 ; json_key_id=18720
)
Olivia Lewis est numéro #3 au classement avec un salaire de $46000
(
autres informations concernant l'employé(e) Olivia Lewis
 >> name=Olivia Lewis ; salary=46000 ; hire_date=2019, August 19 ; json_key_id=18728
)
Emma Robinson est numéro #4 au classement avec un salaire de $48000
(
autres informations concernant l'employé(e) Emma Robinson
 >> name=Emma Robinson ; salary=48000 ; hire_date=2016, April 05 ; json_key_id=18732
)
Mia Martinez est numéro #5 au classement avec un salaire de $53000
(
autres informations concernant l'employé(e) Mia Martinez
 >> name=Mia Martinez ; salary=53000 ; hire_date=2020, September 30 ; json_key_id=18730
)
William Clark est numéro #6 au classement avec un salaire de $54000
(
autres informations concernant l'employé(e) William Clark
 >> name=William Clark ; salary=54000 ; hire_date=2021, July 07 ; json_key_id=18727
)
Lucas Scott est numéro #7 au classement avec un salaire de $59000
(
autres informations concernant l'employé(e) Lucas Scott
 >> name=Lucas Scott ; salary=59000 ; hire_date=2019, November 20 ; json_key_id=18733
)
David Jones est numéro #8 au classement avec un salaire de $60000
(
autres informations concernant l'employé(e) David Jones
 >> name=David Jones ; salary=60000 ; hire_date=2017, October 22 ; json_key_id=18721
)
stderr
PHP Warning:  Use of undefined constant JSON_AS_ARRAY - assumed 'JSON_AS_ARRAY' (this will throw an Error in a future version of PHP) in /home/VyEtFN/prog.php on line 35
PHP Warning:  Use of undefined constant JSON_AS_ARRAY - assumed 'JSON_AS_ARRAY' (this will throw an Error in a future version of PHP) in /home/VyEtFN/prog.php on line 35
PHP Warning:  Use of undefined constant JSON_AS_ARRAY - assumed 'JSON_AS_ARRAY' (this will throw an Error in a future version of PHP) in /home/VyEtFN/prog.php on line 35
PHP Warning:  Use of undefined constant JSON_AS_ARRAY - assumed 'JSON_AS_ARRAY' (this will throw an Error in a future version of PHP) in /home/VyEtFN/prog.php on line 35