I have an array of arrays:
Array (
[0] => Array (
[id] = 7867867,
[title] = 'Some Title'),
[1] => Array (
[id] = 3452342,
[title] = 'Some Title'),
[2] => Array (
[id] = 1231233,
[title] = 'Some Title'),
[3] => Array (
[id] = 5867867,
[title] = 'Some Title')
)
The need to go in a specific order:
How would I go about doing that? I have sorted arrays before, and read plenty of other posts about it, but they are always comparison based (ie valueA < valueB).
Help is appreciated.
I have an array of arrays:
Array (
[0] => Array (
[id] = 7867867,
[title] = 'Some Title'),
[1] => Array (
[id] = 3452342,
[title] = 'Some Title'),
[2] => Array (
[id] = 1231233,
[title] = 'Some Title'),
[3] => Array (
[id] = 5867867,
[title] = 'Some Title')
)
The need to go in a specific order:
How would I go about doing that? I have sorted arrays before, and read plenty of other posts about it, but they are always comparison based (ie valueA < valueB).
Help is appreciated.
I have an array of arrays:
Array (
[0] => Array (
[id] = 7867867,
[title] = 'Some Title'),
[1] => Array (
[id] = 3452342,
[title] = 'Some Title'),
[2] => Array (
[id] = 1231233,
[title] = 'Some Title'),
[3] => Array (
[id] = 5867867,
[title] = 'Some Title')
)
The need to go in a specific order:
How would I go about doing that? I have sorted arrays before, and read plenty of other posts about it, but they are always comparison based (ie valueA < valueB).
Help is appreciated.
I have an array of arrays:
Array (
[0] => Array (
[id] = 7867867,
[title] = 'Some Title'),
[1] => Array (
[id] = 3452342,
[title] = 'Some Title'),
[2] => Array (
[id] = 1231233,
[title] = 'Some Title'),
[3] => Array (
[id] = 5867867,
[title] = 'Some Title')
)
The need to go in a specific order:
How would I go about doing that? I have sorted arrays before, and read plenty of other posts about it, but they are always comparison based (ie valueA < valueB).
Help is appreciated.
I have an array of arrays:
Array (
[0] => Array (
[id] = 7867867,
[title] = 'Some Title'),
[1] => Array (
[id] = 3452342,
[title] = 'Some Title'),
[2] => Array (
[id] = 1231233,
[title] = 'Some Title'),
[3] => Array (
[id] = 5867867,
[title] = 'Some Title')
)
The need to go in a specific order:
How would I go about doing that? I have sorted arrays before, and read plenty of other posts about it, but they are always comparison based (ie valueA < valueB).
Help is appreciated.
I have an array of arrays:
Array (
[0] => Array (
[id] = 7867867,
[title] = 'Some Title'),
[1] => Array (
[id] = 3452342,
[title] = 'Some Title'),
[2] => Array (
[id] = 1231233,
[title] = 'Some Title'),
[3] => Array (
[id] = 5867867,
[title] = 'Some Title')
)
The need to go in a specific order:
How would I go about doing that? I have sorted arrays before, and read plenty of other posts about it, but they are always comparison based (ie valueA < valueB).
Help is appreciated.
I have an array of arrays:
Array (
[0] => Array (
[id] = 7867867,
[title] = 'Some Title'),
[1] => Array (
[id] = 3452342,
[title] = 'Some Title'),
[2] => Array (
[id] = 1231233,
[title] = 'Some Title'),
[3] => Array (
[id] = 5867867,
[title] = 'Some Title')
)
The need to go in a specific order:
How would I go about doing that? I have sorted arrays before, and read plenty of other posts about it, but they are always comparison based (ie valueA < valueB).
Help is appreciated.
I have an array of arrays:
Array (
[0] => Array (
[id] = 7867867,
[title] = 'Some Title'),
[1] => Array (
[id] = 3452342,
[title] = 'Some Title'),
[2] => Array (
[id] = 1231233,
[title] = 'Some Title'),
[3] => Array (
[id] = 5867867,
[title] = 'Some Title')
)
The need to go in a specific order:
How would I go about doing that? I have sorted arrays before, and read plenty of other posts about it, but they are always comparison based (ie valueA < valueB).
Help is appreciated.
I bump into this same problem and @mickmackusa has the answer I need. The selected answer does not sort when there is a NULL
value. For example:
$order = array(3, 2, 10);
$array = array(
array('id' => NULL, 'title' => 'any order since null but not top'),
array('id' => NULL, 'title' => 'any order since null but not top'),
array('id' => NULL, 'title' => 'any order since null but not top'),
array('id' => 2, 'title' => 'should be top'),
);
usort($array, function ($a, $b) use ($order) {
$pos_a = array_search($a['id'], $order);
$pos_b = array_search($b['id'], $order);
return $pos_a - $pos_b;
});
The results above will show an output of:
array(4) {
[0]=>
array(2) {
["id"]=>
NULL
["title"]=>
string(32) "any order since null but not top"
}
[1]=>
array(2) {
["id"]=>
NULL
["title"]=>
string(32) "any order since null but not top"
}
[2]=>
array(2) {
["id"]=>
NULL
["title"]=>
string(32) "any order since null but not top"
}
[3]=>
array(2) {
["id"]=>
int(2)
["title"]=>
string(13) "should be top"
}
}
In @mickmackusa's answer, not only it eliminates null in the sorting but also put in the first whatever is available in the order basis. So since in the array the only available is 2 then that would be on top.
Although it doesn't work in PHP 5.6. So I convert it to PHP 5.6 compatible. This is what I got
usort($array, function($a, $b) use($order, $default) {
$a = (isset($order[$a['id']]) ? $order[$a['id']] : $default);
$b = (isset($order[$b['id']]) ? $order[$b['id']] : $default);
if($a == $b) return 0;
elseif($a > $b) return 1;
return -1;
});
The result for the sort above would be
array(4) {
[0]=>
array(2) {
["id"]=>
int(2)
["title"]=>
string(13) "should be top"
}
[1]=>
array(2) {
["id"]=>
NULL
["title"]=>
string(32) "any order since null but not top"
}
[2]=>
array(2) {
["id"]=>
NULL
["title"]=>
string(32) "any order since null but not top"
}
[3]=>
array(2) {
["id"]=>
NULL
["title"]=>
string(32) "any order since null but not top"
}
}
I hope my conversion of the code would help dev who works on an obsolete server with lower php version.
This is how I sort my multi-dimensional array in ASC order based on id
value:
$arrayFilter = array(
array('product_tag' => 'xenia', 'id' => 4),
array('product_tag' => 'worn', 'id' => 5),
array('product_tag' => 'woven', 'id' => 3),
array('product_tag' => 'nude', 'id' => 1)
);
for ($i = 0; $i < sizeof($arrayFilter); $i++) {
for ($j=$i+1; $j < sizeof($arrayFilter); $j++) {
if ($arrayFilter[$i]['id'] > $arrayFilter[$j]['id']) {
$c = $arrayFilter[$i];
$arrayFilter[$i] = $arrayFilter[$j];
$arrayFilter[$j] = $c;
}
}
}
print_r($arrayFilter);
OUTPUT:
Array
(
[0] => Array
(
[product_tag] => nude
[id] => 1
)
[1] => Array
(
[product_tag] => woven
[id] => 3
)
[2] => Array
(
[product_tag] => xenia
[id] => 4
)
[3] => Array
(
[product_tag] => worn
[id] => 5
)
)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.