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

GROUP BY with ROLLUP
Can't get php.ini changes to take effect
Invalid Resource Mailchimp API
Multiple OR conditions in DO…WHILE loop PHP
Update XML attributes using PHP, but result was “Can't use method return value in write context”
save each text file's contents into a database table mysql
Routing Laravel
Using volley to retrieve data(multiple rows) from mysql
php watermark an image with opacity
Get first day of current week - x
Sending Form Data Using POST To The Current Page And Another PHP Page At The Same Time
Vue-resource issue with $http - Uncaught TypeError: Cannot read property 'post' of undefined
Where to place php files used to connect to a database in a real web server and not WAMP
Query Wordpress Database outside of Wordpress files
How to use variable inside the parameter of $_POST in php
PHPExcel Truncate zero from begin and change dot in comma

Categories

HOME
ionic2
knockout.js
angular-ui-grid
eclipse-plugin
jms
livecode
scroll
key
subdomain
code-formatting
moodle-api
share
video-streaming
facebook-android-sdk
hystrix
solution
graphdb
rangy
android-externalstorage
spring-amqp
mpu6050
texas-instruments
office-ui-fabric
spam
batch-rename
acl
web-push
cellular-network
webviewclient
unmarshalling
locks
rspec-rails
nest
creation
grails-2.5
runtimeexception
love2d
installanywhere
microsoft-ui-automation
export-to-pdf
fluid-mac-app-engine
flume-twitter
jenkins-slave
spongycastle
sony-future-lab-n
comm
entropy
scala-collections
dtd
email-forwarding
apache-modules
emf-compare
adobe-reader
email-injection
msbuild-4.0
unsigned
odp.net-managed
sharepoint-apps
grinder
servicestack-bsd
godeps
enaml
android-handler
ocmockito
kotlin-android-extensions
azure-xplat-cli
camus
nsmutabledata
subview
ssmtp
incron
maven-shade-plugin
ildasm
iplimage
storing-data
ecos
jini
preorder
webaii
jack
hotswap
django-sites
mft
compiler-flags
infinite
application-server
quickgraph
jbox2d
system-requirements
zend-pdf
instance-variables
workflow-manager-1.x
voice-recording
image-scanner
gwt-celltable
multidrop-bus
play2-mini
space-partitioning
page-curl
airprint
django-pagination
gaelyk
formal-semantics
odac
urchin
tacit-programming
downloadfile
error-detection

Resources

Encrypt Message