如果 php 中的某些元素中存在键,如何使用值对数组进行排序
How to sort array with value if key exist in some elements in php
我正在使用 php,我在 foreach 循环中获取数据,并且在某些元素中有键“profile_image_max_id”,而某些元素是空的
- 我想根据最大值“profile_image_max_id”(如果存在)对数据进行排序,所以“profile_image_max_id”的最大值应该是一个
- 在某些元素中(在 foreach 内),其中“profile_image_max_id”不退出应随任何 randombaly/any 顺序
这是我目前的数据
Array
(
[46456] => Array
(
[id] => 46456
[status] => approved
[profile_image] => isProfile
[profile_image_max_id] =>
)
[46457] => Array
(
[id] => 46457
[status] => approved
[profile_image] => isProfile
[profile_image_max_id] =>
)
这是我当前的代码,我哪里错了?
$final = array();
foreach ( $photos as $key $photo ) :
$final[$key] = $row['price'];
endforeach;
array_multisort($final, SORT_DESC, $photos);
您可以使用 uasort
通过传入自定义回调来执行此操作,如下所示。
如果 profile_image_max_id
键不存在,我们将 return INT 的最小值,使其最后出现。否则,profile_image_max_id
将按降序排列。
<?php
uasort($data, function($a, $b){
$a_image_id = $a['profile_image_max_id'] ?? PHP_INT_MIN;
$b_image_id = $b['profile_image_max_id'] ?? PHP_INT_MIN;
return $b_image_id <=> $a_image_id;
});
我正在使用 php,我在 foreach 循环中获取数据,并且在某些元素中有键“profile_image_max_id”,而某些元素是空的
- 我想根据最大值“profile_image_max_id”(如果存在)对数据进行排序,所以“profile_image_max_id”的最大值应该是一个
- 在某些元素中(在 foreach 内),其中“profile_image_max_id”不退出应随任何 randombaly/any 顺序
这是我目前的数据
Array
(
[46456] => Array
(
[id] => 46456
[status] => approved
[profile_image] => isProfile
[profile_image_max_id] =>
)
[46457] => Array
(
[id] => 46457
[status] => approved
[profile_image] => isProfile
[profile_image_max_id] =>
)
这是我当前的代码,我哪里错了?
$final = array();
foreach ( $photos as $key $photo ) :
$final[$key] = $row['price'];
endforeach;
array_multisort($final, SORT_DESC, $photos);
您可以使用 uasort
通过传入自定义回调来执行此操作,如下所示。
如果 profile_image_max_id
键不存在,我们将 return INT 的最小值,使其最后出现。否则,profile_image_max_id
将按降序排列。
<?php
uasort($data, function($a, $b){
$a_image_id = $a['profile_image_max_id'] ?? PHP_INT_MIN;
$b_image_id = $b['profile_image_max_id'] ?? PHP_INT_MIN;
return $b_image_id <=> $a_image_id;
});