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

Php PDO SQL Issue
Create custom Bootstrap dropdown in WordPress navigation
Calculating the sine of pi with php
Can't access object(stdClass) with twig
I can't send email on production environment
Using PHP DomDocument to add nested elements
Get date of next nearest weekday from today
How to execute a php script in php script?
PHP: Execute command using SSH on remote server without using net_ssh2
php loop through json, differing property names
Error retrieving credentials from the instance profile metadata server
PHP - Send Form Data from 1 Script to Another [closed]
php reading csv data into a single line
hide products from users who are not logged in (using tags)?
Magento 1.9:- how to show disabled product in product page
PHP call Metodo and redirect to view

Categories

HOME
office365
visual-studio
knockout.js
firebase
mpdf
freeradius
yahoo-weather-api
opencv-python
celery
vue-resource
native-base
migrate
fasm
pm2
sslhandshakeexception
supervisord
vertica
exe
jqxgrid
checkout
jaspersoft-studio
renderscript
psql
akka-persistence
pst
conda
batch-rename
perfino
password-generator
crud
math.js
sfml
xenapp
winsock
argv
cloveretl
orchardcms-1.8
cups
stackpanel
jslint
ms-solver-foundation
django-smart-selects
llvm-ir
stat
imgur
resampling
pyttsx
fiware-wirecloud
dredd
windows-media-player
image-registration
icecast
nusoap
predicates
researchkit
visual-studio-monaco
msbuild-4.0
xcode8-beta4
maven-release-plugin
mercurial-extension
outlook.com
juniper-network-connect
smart-tv
calcite
espresso
blockquote
360-degrees
tree-structure
kotlin-android-extensions
thoughtworks-go
berkeley-db-xml
lmax
git-reset
forio-contour
flipboard
roxy-fileman
nosql-aggregation
unrealscript
iirf
insertion
tfs-sdk
smartfox
border-box
drawimage
sql-parametrized-query
page-curl
channelfactory
formal-semantics
mygeneration
mongrel
3-tier
google-translator-toolkit
fuzzy-comparison
tso
rakudo
isapi-redirect
service-factory

Resources

Database Users
RDBMS discuss
Database Dev&Adm
javascript
java
csharp
php
android
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App