Ошибка с функцией php

154
28 октября 2019, 23:30

Объясните, почему здесь код не работает вроде бы ведь логично выстроено (нет)? Есть массив с перечнем папок, где находятся индексные файлы

$array = [ 
    'title' => ['/site/route/iphone/index.php', 'Iphone', 0], 
    'title1' => ['/site/route/samsung/index.php', 'Samsung', 2],
    'title2' => ['/site/route/xaomi/index.php', 'Xaomi', 3],
    'title3' => ['/site/route/oppo/index.php', 'Oppo', 4],
    'title4' => ['/site/route/nokia/index.php', 'Nokia', 1],
];

И функция, которая их выводит

function Menu($array) { 
    foreach ($array as $titles) { 
        echo '<a href="'.$titles[1].'">'.$titles[0].'</a>' . "<br>";
    }
}

Затем другая функция, которая сортирует значения в порядке убывания и возрастания

function array_sort($array, $key = 'sort', $sort = SORT_ASC) { 
    usort($array, function ($a, $b) use ($key, $sort) { 
        if ($key[2] == $sort[2]) {
            return 0;
        } elseif ($key[2] < $sort[2]) {
            return $key = 'sort'; 
        } else {
            return $sort = SORT_ASC;
        }
    })
}
array_sort($array, $key = 'sort', 0); 
Menu($array);
Answer 1

Не работает, потому что сортируете Вы в функции. Из функции сортируемый массив надо вернуть. А к вопросу, что уже сортирует и как - разбирайте свою функцию сортировки.

function Menu($array) { 
    foreach ($array as $titles) { 
    echo '<a href="'.$titles[1].'">'.$titles[0].'</a>' . "<br>";};
};
function array_sort($array, $key = 'sort', $sort = SORT_ASC) { 
usort($array, function ($a, $b) { 
    if ($a[2] == $b[2]) {
        return 0;
    } elseif ($a[2] < $b[2]) {
        return $a = 'sort'; 
    } else {
        return $b = SORT_ASC;
    };
});
return $array;
};
$array = array_sort($array, $key = 'sort', 0); 
Menu($array);
Answer 2
$array = [
    'title' => ['/site/route/iphone/index.php', 'Iphone', 4],
    'title1' => ['/site/route/samsung/index.php', 'Samsung', 5],
    'title2' => ['/site/route/xaomi/index.php', 'Xaomi', 3],
    'title3' => ['/site/route/oppo/index.php', 'Oppo', 2],
    'title4' => ['/site/route/nokia/index.php', 'Nokia', 1],
];
function Menu($array) {
    foreach ($array as $titles) {
        echo '<a href="'.$titles[1].'">'.$titles[0].'</a>' . "<br>";};
};
function array_sort(&$array {
    usort($array, function ($a, $b) {
        return strcmp($a[2], $b[2]);
    });
}

array_sort($array, $key = 'sort', 0);
Menu($array);
READ ALSO
Почему axios не получает data?

Почему axios не получает data?

JS файл с запросом:

148
Штрих код на php

Штрих код на php

Как сделать штрих код на php? А именно с цифрами, то есть на сайте после заполнения формы, появляется форма заказа со штрих кодом, и каждый раз...

171
Конкатенация $sql в функции mysqli_query()

Конкатенация $sql в функции mysqli_query()

подскажите пожалуйста, почему функция $mysqli->query() не выполняется если произвести конкатенацию переменных?

124