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.
Result of php executing
Full code of array ordenar.php
- <?php
- $array = [
- 'card_list' => [
- 0 => [
- 'name' => 'Effect Veiler',
- 'details' => ['some text', 'some text'],
- 'set' => [
- 'ETCO-EN100' => [
- 'release' => '2020-01-19',
- 'rarity' => [
- 'Starlight' => [
- 0 => [
- 'edition' => '1st',
- 'seller' => [
- 0 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'NM',
- 'price' => 421.25,
- 'stock' => true,
- 'main' => true,
- ],
- 1 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'LP',
- 'price' => 265.34,
- 'stock' => false,
- 'main' => true,
- ],
- 3 => [
- 'name' => 'Vendedor # 2',
- 'status' => 'NM',
- 'price' => 400.80,
- 'stock' => true,
- 'main' => false,
- ],
- 4 => [
- 'name' => 'Vendedor # 3',
- 'status' => 'NM',
- 'price' => 412.68,
- 'stock' => true,
- 'main' => false,
- ],
- ],
- ],
- 1 => [
- 'edition' => 'unl',
- 'seller' => [
- 0 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'NM',
- 'price' => 401.25,
- 'stock' => true,
- 'main' => true,
- ],
- 1 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'LP',
- 'price' => 245.34,
- 'stock' => false,
- 'main' => true,
- ],
- 3 => [
- 'name' => 'Vendedor # 2',
- 'status' => 'NM',
- 'price' => 380.80,
- 'stock' => true,
- 'main' => false,
- ],
- 4 => [
- 'name' => 'Vendedor # 3',
- 'status' => 'NM',
- 'price' => 392.68,
- 'stock' => true,
- 'main' => false,
- ],
- ],
- ],
- ],
- ],
- ],
- 'DREV-EN002' => [
- 'release' => '2012-05-23',
- 'rarity' => [
- 'Ultra' => [
- 0 => [
- 'edition' => '1st',
- 'seller' => [
- 0 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'NM',
- 'price' => 35.25,
- 'stock' => true,
- 'main' => true,
- ],
- 1 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'LP',
- 'price' => 32.34,
- 'stock' => false,
- 'main' => true,
- ],
- ],
- ],
- 1 => [
- 'edition' => 'unl',
- 'seller' => [
- 0 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'NM',
- 'price' => 25.25,
- 'stock' => true,
- 'main' => true,
- ],
- 1 => [
- 'name' => 'Vendedor # 2',
- 'status' => 'LP',
- 'price' => 21.34,
- 'stock' => false,
- 'main' => true,
- ],
- ],
- ],
- ],
- 'Ultimate' => [
- 0 => [
- 'edition' => '1st',
- 'seller' => [
- 0 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'NM',
- 'price' => 655.25,
- 'stock' => true,
- 'main' => true,
- ],
- 1 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'LP',
- 'price' => 605.34,
- 'stock' => false,
- 'main' => true,
- ],
- ],
- ],
- 1 => [
- 'edition' => 'unl',
- 'seller' => [
- 0 => [
- 'name' => 'Vendedor # 1',
- 'status' => 'NM',
- 'price' => 580.25,
- 'stock' => true,
- 'main' => true,
- ],
- 1 => [
- 'name' => 'Vendedor # 2',
- 'status' => 'LP',
- 'price' => 565.34,
- 'stock' => false,
- 'main' => true,
- ],
- ],
- ],
- ],
- ],
- ],
- ],
- ],
- ],
- ];
- /**
- * Rebuild the Array
- */
- $result = [];
- foreach ($array as $key1 => $value1) {
- if (strpos($key1, 'card_list') !== false) {
- foreach ($value1 as $key2 => $value2) {
- foreach ($value2 as $key3 => $value3) {
- //detecting name node
- if (strpos($key3, 'name') !== false) {
- $result[$key2]['card_name'] = $value3;
- }
- //detecting details node
- if (strpos($key3, 'details') !== false) {
- $result[$key2]['detail'] = implode('<br>', $value3);
- }
- //detecting set node
- if (strpos($key3, 'set') !== false) {
- $result[$key2]['list'] = [];
- foreach ($value3 as $key_exp => $value_exp) {
- $code_exp = $key_exp;
- $release = $value_exp['release'];
- foreach ($value_exp['rarity'] as $rarity => $rarity_detail) {
- foreach ($rarity_detail as $num_reg => $edition_data) {
- $edition = $edition_data['edition'];
- foreach ($edition_data['seller'] as $num_seller => $seller_detail) {
- $result[$key2]['list'][] = [
- 'code_exp' => $code_exp,
- 'edition' => $edition,
- 'release' => $release,
- 'rarity' => $rarity,
- 'seller_name' => $seller_detail['name'],
- 'prod_status' => $seller_detail['status'],
- 'prod_price' => $seller_detail['price'],
- 'prod_stock' => ($seller_detail['stock'] ? 'In Stock' : 'Out of Stock'),
- 'main_store' => ($seller_detail['main'] ? 'Not' : 'Yes'),
- ];
- }
- }
- }
- }
- }
- }
- }
- }
- }
- /**
- * Apply Sort Filter
- */
- //array_multisort(array_column($array, 'prod_price'), $array);
- //usort($array, fn($a, $b) => $a['prod_price'] <=> $b['prod_price']);
- //usort($array, function ($a, $b) {
- // return $b['value'] - $a['value'];
- //});
- /**
- * loop the new array
- */
- $buffer = '<table>';
- foreach ($result as $key => $reg) {
- foreach ($reg as $index => $data) {
- if (strpos($index, 'card_name') !== false) {
- $buffer .= '<tr><th><h3>' . $data . '</h3></th></tr>';
- }
- if (strpos($index, 'details') !== false) {
- $buffer .= '<tr><th><h3>' . $data . '</h3></th></tr>';
- }
- if (strpos($index, 'list') !== false) {
- $buffer .= '<tr><th><table border="1">';
- foreach ($data as $num_reg => $car_list) {
- $buffer .= '<tr>
- <td>' . ($num_reg + 1) . '</td>
- <td>' . $car_list['code_exp'] . '</td>
- <td>' . $car_list['edition'] . '</td>
- <td>' . $car_list['release'] . '</td>
- <td>' . $car_list['rarity'] . '</td>
- <td>' . $car_list['seller_name'] . '</td>
- <td>' . $car_list['prod_status'] . '</td>
- <td>' . $car_list['prod_price'] . '</td>
- <td>' . $car_list['prod_stock'] . '</td>
- <td>' . $car_list['main_store'] . '</td>
- </tr>';
- }
- $buffer .= '</table></th></tr>';
- }
- }
- }
- $buffer .= '</table > ';
- echo $buffer;