<?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