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

load default page from sub folder index page using .htaccess php
Parse error: syntax error, unexpected '"', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) [duplicate]
How to remove items with certain length from array in php
PHP running multiple scripts concurrently
Laravel can't grab inputs from form to send out email
Find array key where value contains a specific value
Redirecting duplicated pages in WordPress template
Show Duplicate Values ‚Äčin Mysql
PHP SHMOP() Memory read error
How to write correct syntax for myname [closed]
getting error when try to save shipping information for user using magento 2 api
foreach with a simple variable?
SQL sub query from PHP PDO query
inserting record if count of column is less than two else not inserting into mysql
MethodNotAllowedHttpException in RouteCollection.php line 218 what can I do?
dompdf showing quesetion marks Instead of arabic characters

Categories

HOME
nam
orientdb
artificial-intelligence
vagrant
livecode
dry
nsview
plpgsql
theano
initialization
websocket
liferay-7
tfs2015
tibco
hyperledger
wine
reportviewer
tiff
user-defined-types
office-ui-fabric
tfsbuild
http-authentication
pymongo
unrar
ruby-daemons
sparkle
credit-card
tilemill
bean-validation
buildforge
nppexec
android-alarms
strapi
text-decorations
android-n
best-buy-api
task-parallel-library
pyttsx
dbcc
xcode8.2
bit-shift
dredd
openstack-glance
extjs4.1
webvtt
freshdesk
patternlab.io
sesame
apache-modules
pecl
sidewaffle
portal
controllers
multi-touch
jsonix
mathjs
gcloud-node
oci
maximize
mathnet
i2b2
seadragon
wif4.5
certificate-authority
cortana
nastran
asp.net-web-api-helppages
gitlab-omnibus
apple
wlanapi
nsmutabledata
mojo
rubber
relationships
osascript
webautomation
flipboard
pre
profiles
infinite
xsd2code
mp4parser
insertion
oscilloscope
contextswitchdeadlock
idispatch
taskkill
firebird1.5
opends
zend-server-ce
canonicalization
kernel32
principles
eventaggregator
mysqli-multi-query
spring-modules
gtktextview
accumulator
jvm-bytecode

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App