array ordenar - PHP Online

Form of PHP Sandbox

Enter Your PHP code here for testing/debugging in the Online PHP Sandbox. As in the usual PHP files, you can also add HTML, but do not forget to add the tag <?php in the places where the PHP script should be executed.



Your result can be seen below.

Result of php executing





Full code of array ordenar.php

  1. <?php
  2.  
  3. $array = [
  4.     'card_list' => [
  5.         0 => [
  6.             'name'    => 'Effect Veiler',
  7.             'details' => ['some text', 'some text'],
  8.             'set'     => [
  9.                 'ETCO-EN100' => [
  10.                     'release' => '2020-01-19',
  11.                     'rarity'  => [
  12.                         'Starlight' => [
  13.                             0 => [
  14.                                 'edition' => '1st',
  15.                                 'seller'  => [
  16.                                     0 => [
  17.                                         'name'   => 'Vendedor # 1',
  18.                                         'status' => 'NM',
  19.                                         'price'  => 421.25,
  20.                                         'stock'  => true,
  21.                                         'main'   => true,
  22.                                     ],
  23.                                     1 => [
  24.                                         'name'   => 'Vendedor # 1',
  25.                                         'status' => 'LP',
  26.                                         'price'  => 265.34,
  27.                                         'stock'  => false,
  28.                                         'main'   => true,
  29.                                     ],
  30.                                     3 => [
  31.                                         'name'   => 'Vendedor # 2',
  32.                                         'status' => 'NM',
  33.                                         'price'  => 400.80,
  34.                                         'stock'  => true,
  35.                                         'main'   => false,
  36.                                     ],
  37.                                     4 => [
  38.                                         'name'   => 'Vendedor # 3',
  39.                                         'status' => 'NM',
  40.                                         'price'  => 412.68,
  41.                                         'stock'  => true,
  42.                                         'main'   => false,
  43.                                     ],
  44.                                 ],
  45.                             ],
  46.                             1 => [
  47.                                 'edition' => 'unl',
  48.                                 'seller'  => [
  49.                                     0 => [
  50.                                         'name'   => 'Vendedor # 1',
  51.                                         'status' => 'NM',
  52.                                         'price'  => 401.25,
  53.                                         'stock'  => true,
  54.                                         'main'   => true,
  55.                                     ],
  56.                                     1 => [
  57.                                         'name'   => 'Vendedor # 1',
  58.                                         'status' => 'LP',
  59.                                         'price'  => 245.34,
  60.                                         'stock'  => false,
  61.                                         'main'   => true,
  62.                                     ],
  63.                                     3 => [
  64.                                         'name'   => 'Vendedor # 2',
  65.                                         'status' => 'NM',
  66.                                         'price'  => 380.80,
  67.                                         'stock'  => true,
  68.                                         'main'   => false,
  69.                                     ],
  70.                                     4 => [
  71.                                         'name'   => 'Vendedor # 3',
  72.                                         'status' => 'NM',
  73.                                         'price'  => 392.68,
  74.                                         'stock'  => true,
  75.                                         'main'   => false,
  76.                                     ],
  77.                                 ],
  78.                             ],
  79.                         ],
  80.                     ],
  81.                 ],
  82.                 'DREV-EN002' => [
  83.                     'release' => '2012-05-23',
  84.                     'rarity'  => [
  85.                         'Ultra'    => [
  86.                             0 => [
  87.                                 'edition' => '1st',
  88.                                 'seller'  => [
  89.                                     0 => [
  90.                                         'name'   => 'Vendedor # 1',
  91.                                         'status' => 'NM',
  92.                                         'price'  => 35.25,
  93.                                         'stock'  => true,
  94.                                         'main'   => true,
  95.                                     ],
  96.                                     1 => [
  97.                                         'name'   => 'Vendedor # 1',
  98.                                         'status' => 'LP',
  99.                                         'price'  => 32.34,
  100.                                         'stock'  => false,
  101.                                         'main'   => true,
  102.                                     ],
  103.                                 ],
  104.                             ],
  105.                             1 => [
  106.                                 'edition' => 'unl',
  107.                                 'seller'  => [
  108.                                     0 => [
  109.                                         'name'   => 'Vendedor # 1',
  110.                                         'status' => 'NM',
  111.                                         'price'  => 25.25,
  112.                                         'stock'  => true,
  113.                                         'main'   => true,
  114.                                     ],
  115.                                     1 => [
  116.                                         'name'   => 'Vendedor # 2',
  117.                                         'status' => 'LP',
  118.                                         'price'  => 21.34,
  119.                                         'stock'  => false,
  120.                                         'main'   => true,
  121.                                     ],
  122.                                 ],
  123.                             ],
  124.                         ],
  125.                         'Ultimate' => [
  126.                             0 => [
  127.                                 'edition' => '1st',
  128.                                 'seller'  => [
  129.                                     0 => [
  130.                                         'name'   => 'Vendedor # 1',
  131.                                         'status' => 'NM',
  132.                                         'price'  => 655.25,
  133.                                         'stock'  => true,
  134.                                         'main'   => true,
  135.                                     ],
  136.                                     1 => [
  137.                                         'name'   => 'Vendedor # 1',
  138.                                         'status' => 'LP',
  139.                                         'price'  => 605.34,
  140.                                         'stock'  => false,
  141.                                         'main'   => true,
  142.                                     ],
  143.                                 ],
  144.                             ],
  145.                             1 => [
  146.                                 'edition' => 'unl',
  147.                                 'seller'  => [
  148.                                     0 => [
  149.                                         'name'   => 'Vendedor # 1',
  150.                                         'status' => 'NM',
  151.                                         'price'  => 580.25,
  152.                                         'stock'  => true,
  153.                                         'main'   => true,
  154.                                     ],
  155.                                     1 => [
  156.                                         'name'   => 'Vendedor # 2',
  157.                                         'status' => 'LP',
  158.                                         'price'  => 565.34,
  159.                                         'stock'  => false,
  160.                                         'main'   => true,
  161.                                     ],
  162.                                 ],
  163.                             ],
  164.                         ],
  165.                     ],
  166.                 ],
  167.             ],
  168.         ],
  169.     ],
  170. ];
  171.  
  172. /**
  173.  * Rebuild the Array
  174.  */
  175.  
  176. $result = [];
  177.  
  178. foreach ($array as $key1 => $value1) {
  179.     if (strpos($key1, 'card_list') !== false) {
  180.         foreach ($value1 as $key2 => $value2) {
  181.             foreach ($value2 as $key3 => $value3) {
  182.                 //detecting name node
  183.                 if (strpos($key3, 'name') !== false) {
  184.                     $result[$key2]['card_name'] = $value3;
  185.                 }
  186.                 //detecting details node
  187.                 if (strpos($key3, 'details') !== false) {
  188.                     $result[$key2]['detail'] = implode('<br>', $value3);
  189.                 }
  190.                 //detecting set node
  191.                 if (strpos($key3, 'set') !== false) {
  192.                     $result[$key2]['list'] = [];
  193.                     foreach ($value3 as $key_exp => $value_exp) {
  194.                         $code_exp = $key_exp;
  195.                         $release  = $value_exp['release'];
  196.                         foreach ($value_exp['rarity'] as $rarity => $rarity_detail) {
  197.                             foreach ($rarity_detail as $num_reg => $edition_data) {
  198.                                 $edition = $edition_data['edition'];
  199.                                 foreach ($edition_data['seller'] as $num_seller => $seller_detail) {
  200.                                     $result[$key2]['list'][] = [
  201.                                         'code_exp'    => $code_exp,
  202.                                         'edition'     => $edition,
  203.                                         'release'     => $release,
  204.                                         'rarity'      => $rarity,
  205.                                         'seller_name' => $seller_detail['name'],
  206.                                         'prod_status' => $seller_detail['status'],
  207.                                         'prod_price'  => $seller_detail['price'],
  208.                                         'prod_stock'  => ($seller_detail['stock'] ? 'In Stock' : 'Out of Stock'),
  209.                                         'main_store'  => ($seller_detail['main'] ? 'Not' : 'Yes'),
  210.                                     ];
  211.                                 }
  212.                             }
  213.                         }
  214.                     }
  215.                 }
  216.             }
  217.         }
  218.     }
  219. }
  220.  
  221. /**
  222.  * Apply Sort Filter
  223.  */
  224.  
  225. //array_multisort(array_column($array, 'prod_price'), $array);
  226. //usort($array, fn($a, $b) => $a['prod_price'] <=> $b['prod_price']);
  227. //usort($array, function ($a, $b) {
  228. //    return $b['value'] - $a['value'];
  229. //});
  230.  
  231.  
  232. /**
  233.  * loop the new array
  234.  */
  235.  
  236. $buffer = '<table>';
  237.  
  238. foreach ($result as $key => $reg) {
  239.     foreach ($reg as $index => $data) {
  240.         if (strpos($index, 'card_name') !== false) {
  241.             $buffer .= '<tr><th><h3>' . $data . '</h3></th></tr>';
  242.         }
  243.         if (strpos($index, 'details') !== false) {
  244.             $buffer .= '<tr><th><h3>' . $data . '</h3></th></tr>';
  245.         }
  246.         if (strpos($index, 'list') !== false) {
  247.             $buffer .= '<tr><th><table border="1">';
  248.             foreach ($data as $num_reg => $car_list) {
  249.                 $buffer .= '<tr>
  250.                                                     <td>' . ($num_reg + 1) . '</td>
  251.                                                     <td>' . $car_list['code_exp'] . '</td>
  252.                                                     <td>' . $car_list['edition'] . '</td>
  253.                                                     <td>' . $car_list['release'] . '</td>
  254.                                                     <td>' . $car_list['rarity'] . '</td>
  255.                                                     <td>' . $car_list['seller_name'] . '</td>
  256.                                                     <td>' . $car_list['prod_status'] . '</td>
  257.                                                     <td>' . $car_list['prod_price'] . '</td>
  258.                                                     <td>' . $car_list['prod_stock'] . '</td>
  259.                                                     <td>' . $car_list['main_store'] . '</td>
  260.                                                   </tr>';
  261.             }
  262.             $buffer .= '</table></th></tr>';
  263.         }
  264.     }
  265. }
  266. $buffer .= '</table > ';
  267.  
  268. echo $buffer;
File Description
  • array ordenar
  • PHP Code
  • 14 Dec-2022
  • 11.94 Kb
You can Share it: