[英]How to filter an array based on last name?
我有一個數組如下:
Array(
[0] => 'Sarah, Green',
[1] => 'Adam, Brown',
[2] => 'Fred, Able'
);
從這個數組中,我需要根據姓氏進行排序。
我嘗試了以下代碼:
$this->sortByLastName($data);
private function sortByLastName($data)
{
$result = uasort($data, function($a, $b) {
$splitFirstItem = explode(',', $a);
$spliteSecondItem = explode(',', $b);
$firstItemElement = trim(end($splitFirstItem));
$secondItemElement = trim(end($spliteSecondItem));
return strcasecmp($firstItemElement, $secondItemElement);
});
return $result;
}
但結果我才是真實的。
我在這里犯了什么錯誤。
uasort
只是根據是否成功完成而返回true
/ false
。 該數組已在適當位置排序,因此您的代碼應如下所示:
private function sortByLastName($data)
{
uasort($data, function($a, $b) {
$splitFirstItem = explode(',', $a);
$spliteSecondItem = explode(',', $b);
$firstItemElement = trim(end($splitFirstItem));
$secondItemElement = trim(end($spliteSecondItem));
return strcasecmp($firstItemElement, $secondItemElement);
});
return $data;
}
如下更改功能。
private function sortByLastName($data)
{
uasort($data, function($a, $b) {
$splitFirstItem = explode(',', $a);
$spliteSecondItem = explode(',', $b);
$firstItemElement = trim(end($splitFirstItem));
$secondItemElement = trim(end($spliteSecondItem));
return strcasecmp($firstItemElement, $secondItemElement);
});
return $data;
}
這是因為uasort不返回數組,而是更改傳遞給它的數組。 它僅返回布爾值true或false,具體取決於過程是否成功
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.