Не отображает последнее значение для ksort в php - PullRequest
0 голосов
/ 09 июня 2018

У меня есть этот алгоритм сортировки для сортировки $days в отношении $daysOfWeek, но я не уверен, почему последнее значение не включается в мой массив.Вот код ниже

#default array
$daysOfWeek = array('M','T','W','TH','F');
#your array
$days = array('T','W','TH','','');
#create a new array with key association property
$daysAux = array();
foreach($days as $k=>$v) {
    $key = array_search($v, $daysOfWeek);
    if($key !== FALSE) {
        $daysAux[$key] = $v;
    }
    else
        $daysAux[$key] = '';
    }
# array before sort
echo '<pre/>';print_r($daysAux);
ksort($daysAux);
$days = $daysAux;
#final result
echo '<pre/>';print_r($days);


#output
Array
(
 [1] => T
 [2] => W
 [3] => TH
 [0] => 
)
Array
(
 [0] => 
 [1] => T
 [2] => W
 [3] => TH
)

EXPECTED OUTPUT:
Array
(
[0] =>
[1] => T
[2] => W
[3] => TH
[4] => 
)

1 Ответ

0 голосов
/ 09 июня 2018

код вашего кода должен сказать $daysAux[$k] = вместо $daysAux[$key] =

, потому что в противном случае, когда $key равен false, он просто перезапишет ту же запись вместо создания новой

также необходимо поменять местами days и daysOfWeek в цикле.

#default array
$daysOfWeek = array('M','T','W','TH','F');
#your array
$days = array('T','W','TH','','');
#create a new array with key association property
$daysAux = array();
foreach($days as $k=>$v) {
    $key = array_search($v, $daysOfWeek);
    if($key !== FALSE) {
        $daysAux[$key] = $v;
    }
    else
        $daysAux[$key] = '';
    }
# array before sort
echo '<pre/>';print_r($daysAux);
ksort($daysAux);
$days = $daysAux;
#final result
echo '<pre/>';print_r($days);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...