php


How do I sort an array of objects in PHP?


I'm struggling to get array_multisort() working. I'm sorting some data retrieved from JSON that is an array of five objects, each with data for blog posts in this format:
"1":{"title": "It's a fixer-upper of a planet but we could make it work",
"post_date": "1454889600",
"author": "Elon Musk",
"content": "<p>We choose to go to the moon in this decade and do the other things...</p>",
"category": [ "mars", "space travel" ] },
"2":{"title": "Failure is not an option",
"post_date": "1456099200",
"author": "Gene Kranz",
"content": "<p>Dinosaurs are extinct today because ...</p>",
"category": [ "mis-quoted", "apollo 13" ] },
...etc
I get the file in PHP, decode the JSON into an associative array and then create an array of human readable dates which I have working. I have an array of five objects and need to sort the array by said dates. I then try to use array_multisort and cannot seem to find a syntax that work. Any help would be appreciated and I'm sure it's something small I'm over-looking. No matter how hard I google, I just can't seem to get the search string right. Help please?
<?php //This part I'm confident is working.
$json = file_get_contents("./data/posts.json");
$json_content = json_decode($json, true);
$date_sort = array ();
$posts = array ();
//Sorting the Array - this part seems to work
foreach ($json_content as $postObj) {
$post_date_human = date ('Y-m-d', $postObj['post_date']);
array_push($date_sort, $post_date_human);
}
print_r ($date_sort); //Seems to be working fine, now to try to sort one array of objects by the position of dates in the second array
// Wai u no werk!?
array_multisort($json_content, $date_sort = SORT_ASC);
print_r ($json_content);
For Reference See Below Code.
$json_content = msort($json_content, "post_date");
And here's the function itself:
/**
* Sort a 2 dimensional array based on 1 or more indexes.
*
* msort() can be used to sort a rowset like array on one or more
* 'headers' (keys in the 2th array).
*
* #param array $array The array to sort.
* #param string|array $key The index(es) to sort the array on.
* #param int $sort_flags The optional parameter to modify the sorting
* behavior. This parameter does not work when
* supplying an array in the $key parameter.
*
* #return array The sorted array.
*/
function msort($array, $key, $sort_flags = SORT_REGULAR) {
if (is_array($array) && count($array) > 0) {
if (!empty($key)) {
$mapping = array();
foreach ($array as $k => $v) {
$sort_key = '';
if (!is_array($key)) {
$sort_key = $v[$key];
} else {
// #TODO This should be fixed, now it will be sorted as string
foreach ($key as $key_key) {
$sort_key .= $v[$key_key];
}
$sort_flags = SORT_STRING;
}
$mapping[$k] = $sort_key;
}
asort($mapping, $sort_flags);
$sorted = array();
foreach ($mapping as $k => $v) {
$sorted[] = $array[$k];
}
return $sorted;
}
}
return $array;
}
For More information Visit: https://blog.jachim.be/2009/09/php-msort-multidimensional-array-sort/comment-page-1/
Take a hint from this two links:
I think it have nice solution
link1 , link2
Please read doc for multisort, You will get better idea about solve your errors

Related Links

Multiply fee with quantity of product Woocommerce
Redirecting to same page along with Success Message with Php
Laravel - sorting table by column titles, results not being sorted
Communicating with a Rest API through PHP - how to process?
add record to column in codeigniter if has some dependence
Value of $total not being set inside lumen collection map function
php access parent object of a subclass (no inheritance)
Htaccess rewrite url in browser but dont affect the page (appearance url change only)
php- why traversing multidimensional array inside the foreach() doesnt work
Unable to send and retrieve data on load using ajax
“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1” [duplicate]
php pdo switching primary key values
How do I get value of <select> when a user select a item
Getting url and make the menu active
how to save html and markdown for a model, 2 columns or 1?
AJAX Variable data

Categories

HOME
jboss
yaml
message-queue
informatica
portable-class-library
malware
fireloop
colors
csrf
cname
responsivevoice
cuba-platform
amazon-elb
squirrel-sql
google-tasks-api
web-deployment
l20n
cpu-usage
tracing
plyr
tf-idf
social-networking
envoy
progid
delayed-job
actframework
landscape
spinner
identify
tidal-scheduler
oauth2
fiware-wirecloud
intellij-lombok-plugin
xcglogger
sonatype
punctuation
line-intersection
gnome-terminal
apache-modules
business-rules
ltrace
google-shopping-api
msg
tablespace
pyaudio
groovyfx
fiber
gnucash
mnesia
teensy
m4
lowercase
green-threads
roxygen2
nssortdescriptor
pass-by-value
encryption-symmetric
dc
device-admin
qt5.4
quantify
air-native-extension
boolean-algebra
gpu-programming
iosched
principalcontext
pbkdf2
coalesce
sly-scroller
xmlwriter
semantic-merge
type-safety
inversion
downcasting
version-control-migration
prism-2

Resources

Encrypt Message