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

How to escape ' in setParameter
onclick submit check php
php: how to shoow session variable on every php page [duplicate]
Multilingual site: switching languages
jQuery hide() flicker
Cascading dropdown with jQuery
Regex to match alphanumeric characters, underscore, periods and dash, allowing dot and dash only in the middle
Setting Facebook PHP SDK access_token with setAccessToken()
How do I modify the path used by exec in php
Broken link check while initiating cron-multi
How to format `23/05/2012` into insertable value in DATETIME column?
will users see post on their wall,if a post is made on app page
Wordpress Loop passing variables
PHP Imagick - setTextEncoding() function doesn't work
Upload PHP Code not uploading image
Why create own request object? [closed]

Categories

HOME
jboss
oracle
knockout.js
apache-nifi
bots
transactions
add-on
tcsh
firebase-database
kurento
timber
yahoo
xades4j
getopenfilename
freertos
mailgun
orange-api
user-defined-types
scala-ide
raml
bosun
device
ini
ava
animated-gif
ratio
multi-dimensional-scaling
ninject
rspec-rails
private-key
directfb
amazon-kms
eclipse-gmf
grails-spring-security
icepdf
fiware-wirecloud
destroy
spring.net
maven-jaxb2-plugin
aurelia-fetch-client
scala-collections
gnome-terminal
deedle
predicates
finder
ipywidgets
msg
s-function
ndk-build
fuzzer
teamviewer
outlook.com
smart-tv
ruby-on-rails-4.1
ambiguity
android-handler
cache-manifest
darwin
bootstrap-wysiwyg
abstract-factory
ipod
innerhtml
jolie
berkeley-db-xml
box2dweb
android-2.3-gingerbread
network-printers
code-complexity
particle-swarm
django-settings
illuminate-container
rikulo
ofstream
itunes-sdk
2d-vector
multiscaleimage
image-formats
kobold2d
yuidoc
mmc3
motodev-studio
groovy-console
datacontracts
ccl
outlook-2007-addin
rootkit

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