В вашем примере идентификаторы в массиве $ data нумеруются последовательно и начинаются с 1. Код, который я даю ниже, предполагает, что это всегда так. Если это не так, код не работает.
$result = array();
$index = 0;
foreach ($order as $position) {
$result[$index] = $data[$position - 1];
$index++;
}
В http://codepad.org/YC8w0yHh вы можете видеть, что он работает для ваших данных примера .
EDIT
Если упомянутое выше предположение не выполняется, следующий код достигнет того же результата:
1, 'title' => 'whatever'),
array('id' => 2, 'title' => 'whatever'),
array('id' => 3, 'title' => 'whatever')
);
$order = array(2,3,1);
$order = array_flip($order);
function cmp($a, $b)
{
global $order;
$posA = $order[$a['id']];
$posB = $order[$b['id']];
if ($posA == $posB) {
return 0;
}
return ($posA < $posB) ? -1 : 1;
}
usort($data, 'cmp');
var_dump($data);
См. http: //codepad.org/Q7EcTSfs для доказательства.
Вызывая array_flip () в массиве $ order, он может использоваться для поиска позиции. Это похоже на поиск хеш-таблицы, который является линейным по времени или O (n). Вы не можете сделать лучше.
Вы должны добавить прокси-адрес в свой файл package.json, например, :
},
"proxy": "http://localhost:8080",
"devDependencies": {
Далее, вы просто добавляете все, что находится после localhost, т.е.
axios.get("/onlineshopping/login")
После добавления конфигурации фильтра CORS в весенней загрузке и типа контента в application / x-www-form-urlencoded in axios request моя проблема решена.
export const addProjectTask = (username,password, history) => async dispatch => {
axios.post('http://localhost:8080/onlineshopping/login',
Qs.stringify({
username: username,
password: password
}), {
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}})
.then(function (response) {
console.log(response);
history.push("/");
})
.catch(function (error) {
console.log(error);
});
};
Вы должны создать прокси для вызовов API.
Здесь прокси использует шаблон url для сопоставления с вызовами API и перенаправления их на соответствующий сервер.
Попробуйте выполнить следующее:
Установите http-proxy-middleware
npm install http-proxy-middleware --save
create src / setupProxy.js
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/api', { target: 'http://localhost:8080/' }));
};
Затем запустите ваш локальный сервер разработки