3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array = array( array( 'name' => 'Strawberry', 'id' => '10' ), array( 'id' => '13' ), array( 'name' => 'Apple', 'id' => '20' ), array( 'id' => '28' ), array( 'name' => 'Mandarin', 'id' => '30' ), array( 'name' => 'Apple', 'id' => '50' ), array( 'name' => 'Strawberry', 'id' => '60' ) ); $arraylength = count($array); $result = array();//仮の結果。結果として三次元配列になる。 $bararray = array();// idだけの配列を抜き出す。 for ($j = 0; $j < $arraylength; $j++) { if (array_key_exists('id', $array[$j]) == true && array_key_exists('name', $array[$j]) != true) { $newarr = array(); $newarr['id'] = $array[$j]['id']; array_push($bararray, $newarr); } }// idのみの配列を抜き出した。 $j = 0; for ($i = 0; $i < $arraylength; $i++) { $newarr = array(); for ($k = $i; $k < $arraylength; $k++) { if (array_key_exists('id', $array[$i]) == true && array_key_exists('name', $array[$i]) == true && array_key_exists('name', $array[$k]) == true && $array[$k]['name'] == $array[$i]['name']) { array_push($newarr, $array[$k]); if ($i != $k) { unset($array[$k]); $arraylength--; } ; } } if (!$newarr) { array_push($result, $bararray[$j]); $j++; } else { array_push($result, $newarr); } }//仮の結果、三次元配列はここまで print_r($result); $realresult = array();//求めたい結果 $resultlength = count($result); for ($k = 0; $k < $resultlength; $k++) { $resultArraylength = count($result[$k]); if ($resultArraylength == 1) { if (is_array($result[$k]) == true && array_key_exists(0, $result[$k]) == false) { array_push($realresult, $result[$k]); } else { array_push($realresult, $result[$k]['0']); } } else { for ($m = 0; $m < $resultArraylength; $m++) { array_push($realresult, $result[$k][$m]); } } } var_dump($realresult);
Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 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.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
Array ( [0] => Array ( [0] => Array ( [name] => Strawberry [id] => 10 ) [1] => Array ( [name] => Strawberry [id] => 60 ) ) [1] => Array ( [id] => 13 ) [2] => Array ( [0] => Array ( [name] => Apple [id] => 20 ) [1] => Array ( [name] => Apple [id] => 50 ) ) [3] => Array ( [id] => 28 ) [4] => Array ( [0] => Array ( [name] => Mandarin [id] => 30 ) ) ) array(7) { [0]=> array(2) { ["name"]=> string(10) "Strawberry" ["id"]=> string(2) "10" } [1]=> array(2) { ["name"]=> string(10) "Strawberry" ["id"]=> string(2) "60" } [2]=> array(1) { ["id"]=> string(2) "13" } [3]=> array(2) { ["name"]=> string(5) "Apple" ["id"]=> string(2) "20" } [4]=> array(2) { ["name"]=> string(5) "Apple" ["id"]=> string(2) "50" } [5]=> array(1) { ["id"]=> string(2) "28" } [6]=> array(2) { ["name"]=> string(8) "Mandarin" ["id"]=> string(2) "30" } }
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Array ( [0] => Array ( [0] => Array ( [name] => Strawberry [id] => 10 ) [1] => Array ( [name] => Strawberry [id] => 60 ) ) [1] => Array ( [id] => 13 ) [2] => Array ( [0] => Array ( [name] => Apple [id] => 20 ) [1] => Array ( [name] => Apple [id] => 50 ) ) [3] => Array ( [id] => 28 ) [4] => Array ( [0] => Array ( [name] => Mandarin [id] => 30 ) ) ) array(7) { [0]=> array(2) { ["name"]=> string(10) "Strawberry" ["id"]=> string(2) "10" } [1]=> array(2) { ["name"]=> string(10) "Strawberry" ["id"]=> string(2) "60" } [2]=> array(1) { ["id"]=> string(2) "13" } [3]=> array(2) { ["name"]=> string(5) "Apple" ["id"]=> string(2) "20" } [4]=> array(2) { ["name"]=> string(5) "Apple" ["id"]=> string(2) "50" } [5]=> array(1) { ["id"]=> string(2) "28" } [6]=> array(2) { ["name"]=> string(8) "Mandarin" ["id"]=> string(2) "30" } }

preferences:
254.22 ms | 405 KiB | 290 Q