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

Saving variable in the parent class PHP
fetchColumn() vs rowCount() just for check existing
Why wp_query loop still considers hidden categories and 'post__not_in' in pagination?
Determine file path relative to DOCUMENT_ROOT
PHP Using call_user_func_array to bind_param
What's wrong with my po2php syntax
Variables of extended class (PHP)
PHP PDO ,Can't set name while connection is persistant?
<!--[if lte IE 8]> condional comment not working on wordpress theme
Loop one extra row every 5 loops. Determined by speed of player
installing Google Client Library for Google Analtics PHP
Invalid JSON after preg_replace and json_encode, \n and \t
Creating JSON header on php for android
PHP don't update time
Rewrite URL with NGINX
send email only if field has multiple messages cakephp

Categories

HOME
python-2.7
flask
verification
redmine
transactions
add-on
foaf
command-prompt
openlayers-3
mirc
google-sheets-query
swift2
impala
native-base
log4j2
migrate
watch-os-3
chromecast
xbap
mixpanel
robolectric
bosun
backtracking
intel
exchange-server-2010
ratio
jackrabbit-oak
code-climate
iwebbrowser2
es6-modules
steam-web-api
private-key
bluemixtools
nanogallery
identify
cloudera-quickstart-vm
task-parallel-library
stat
windows-store
imgur
right-click
fiware-wirecloud
spooler
expandablelistview
permission-denied
absolute
windows-media-player
ssi
return-type
supertest
redisson
glassfish-4.1
1010
pecl
front-camera
boost-compute
multi-touch
google-identity-toolkit
xcode6.4
dcount
system.net.mail
piping
apache-pig-grunt
uibinder
jeasyui
teensy
chicagoboss
ambiguity
sqlbase
jnlp
featuretoggle
android-handler
dbmigrate
prism-4
mxe
nanomsg
comctl32
symja
device-admin
quantify
loginview
squeezebox
category-theory
rails-api
ivalueconverter
compiler-flags
django-facebook
web-frameworks
tfs-sdk
itunes-sdk
office-app
border-box
viewpagerindicator
netstream
acpi
kolite
upshot
css-friendly
mongrel
getimagesize
rtti
word-automation

Resources

Encrypt Message



code
soft
python
ios
c
html
jquery
cloud
mobile