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

Include doesn't work?
Yii2: echo variable twice gives wrong result
MySQL/PHP check for duplicate before INSERT
PHP - Security in accessing files outside of web root
Successive queries won't run unless I close the mysqli connection
PHP and HTML attribute combination for PHP Resource Management
Ghostscript: create extra folder for output JPEG
Mysql Reserved Word - how to query? [duplicate]
Imagick/Ghostscript error with PDF input
Is there a pack/unpack version of this?
How do I select emails from list to send
php get all matches string in text after “#” character
Decode UTF8 string with php [duplicate]
How to change the “while” loop to retrieve only 3 top records from MySQL database
PHP: add a custom method to a(n internal) class (derived from exception class) at runtime
Download file to website using php [duplicate]

Categories

HOME
tomcat
verification
clearcase
yahoo-weather-api
plpgsql
fogbugz
amp
flurry
tibco
repair
stored-procedures
angular-meteor
polymer-2.x
yahoo
match
slide
cname
android-externalstorage
createjs
pushdown-automaton
max-msp-jitter
twisted
c#-7.0
web-deployment
l20n
playframework-2.0
gravity
pfobject
pe
error-logging
anova
animated-gif
jstree
plyr
webviewclient
list-comprehension
onchange
region
unmarshalling
rust-cargo
fotorama
adminer
creation
cordys-opentext
cargo
installanywhere
ng-repeat
aurelia-http-client
linq.js
export-to-pdf
pyttsx
vungle-ads
transparency
tinyioc
openerp-6
maatwebsite-excel
bpms
visual-studio-monaco
svnserve
strpos
timestamping
jeditable
polymerfire
gravatar
flipclock
taco
android-expansion-files
flask-security
smart-tv
largenumber
ruby-on-rails-4.1
apache-commons-digester
fanotify
ora-04091
unhandled
wlanapi
ngcordova
swagger-maven-plugin
findersync
uno
microsoft-expression-web
thoughtworks-go
category-theory
pageviews
cidr
spring-social-linkedin
xsd2code
rautomation
sql-view
chartfx
asp.net-mvc-3-areas
django-filebrowser
xalan
system-information
fitch-proofs
wiktionary
infopath-2007
groovy-console
mediacontroller
aptitude
fgetc
aspbutton
rawcontacts
rendering-engine

Resources

Encrypt Message



code
soft
python
ios
c
html
jquery
cloud
mobile