给定这种可能的对象结构(通过var_dump):
stdClass Object
(
[jobs] => Array
(
[0] => stdClass Object
(
[id] => fbb3d
[title] => TRS Trainer
[full_title] => TRS Trainer - Moorhead
[shortcode] => 2330A8E687
[code] =>
[state] => published
[department] => CSD Contact Centers
[url] => https://csd.workable.com/jobs/1029739
[application_url] => https://csd.workable.com/jobs/1029739/candidates/new
[shortlink] => https://csd.workable.com/j/2330A8E687
[location] => stdClass Object
(
[country] => United States
[country_code] => US
[region] => Minnesota
[region_code] => MN
[city] => Moorhead
[zip_code] =>
[telecommuting] =>
)
[created_at] => 2019-05-21T21:03:39Z
)
)
)通过var_export:
stdClass::__set_state(array(
'jobs' =>
array (
0 =>
stdClass::__set_state(array(
'id' => 'fbb3d',
'title' => 'TRS Trainer',
'full_title' => 'TRS Trainer - Moorhead',
'shortcode' => '2330A8E687',
'code' => NULL,
'state' => 'published',
'department' => 'CSD Contact Centers',
'url' => 'https://csd.workable.com/jobs/1029739',
'application_url' => 'https://csd.workable.com/jobs/1029739/candidates/new',
'shortlink' => 'https://csd.workable.com/j/2330A8E687',
'location' =>
stdClass::__set_state(array(
'country' => 'United States',
'country_code' => 'US',
'region' => 'Minnesota',
'region_code' => 'MN',
'city' => 'Moorhead',
'zip_code' => NULL,
'telecommuting' => false,
)),
'created_at' => '2019-05-21T21:03:39Z',
))
),
))按区域排序的最佳方式是什么?我试着像这样使用usort:
function cmp($a, $b) {
return strcmp($a->jobs->location->region, $b->jobs->location->region);
}
$response = json_decode($response);
usort($response, "cmp");但是在将JSON响应解码成一个对象,然后通过usort运行它之后,它并没有排序出来。我不认为我这样做是正确的,编码排序算法也不是我的强项。
我确实考虑过尝试sort,但意识到由于嵌套对象的原因,它并不能解决这个问题。我在Google上寻找其他例子来解决这个问题,但似乎大多数选择都是针对数组的,而我使用的是对象。
发布于 2019-11-10 07:23:59
正如您在注释中所解释的,您希望对主对象的一个属性数组进行排序。为此,您可以将该属性传递给usort(),而不是整个对象,然后比较$a->location->region进行排序。
function cmp($a, $b) {
return strcmp($a->location->region, $b->location->region);
}
$response = json_decode($response);
usort($response->jobs, "cmp");https://stackoverflow.com/questions/58784299
复制相似问题