本文整理汇总了PHP中F::Array_SortByKeysArray方法的典型用法代码示例。如果您正苦于以下问题:PHP F::Array_SortByKeysArray方法的具体用法?PHP F::Array_SortByKeysArray怎么用?PHP F::Array_SortByKeysArray使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类F
的用法示例。
在下文中一共展示了F::Array_SortByKeysArray方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: GetTopicsQuestionVoteByArray
/**
* Получить список голосований в топике-опросе по списку ID
*
* @param array $aTopicsId - Список ID топиков
* @param int $iUserId - ID пользователя
*
* @return array
*/
public function GetTopicsQuestionVoteByArray($aTopicsId, $iUserId)
{
if (!$aTopicsId) {
return array();
}
if (Config::Get('sys.cache.solid')) {
return $this->GetTopicsQuestionVoteByArraySolid($aTopicsId, $iUserId);
}
if (!is_array($aTopicsId)) {
$aTopicsId = array($aTopicsId);
}
$aTopicsId = array_unique($aTopicsId);
$aTopicsQuestionVote = array();
$aTopicIdNotNeedQuery = array();
// * Делаем мульти-запрос к кешу
$aCacheKeys = F::Array_ChangeValues($aTopicsId, 'topic_question_vote_', '_' . $iUserId);
if (false !== ($data = E::ModuleCache()->Get($aCacheKeys))) {
// * проверяем что досталось из кеша
foreach ($aCacheKeys as $iIndex => $sKey) {
/** @var ModuleTopic_EntityTopicQuestionVote[] $data */
if (array_key_exists($sKey, $data)) {
if ($data[$sKey]) {
$aTopicsQuestionVote[$data[$sKey]->getTopicId()] = $data[$sKey];
} else {
$aTopicIdNotNeedQuery[] = $aTopicsId[$iIndex];
}
}
}
}
// * Смотрим каких топиков не было в кеше и делаем запрос в БД
$aTopicIdNeedQuery = array_diff($aTopicsId, array_keys($aTopicsQuestionVote));
$aTopicIdNeedQuery = array_diff($aTopicIdNeedQuery, $aTopicIdNotNeedQuery);
$aTopicIdNeedStore = $aTopicIdNeedQuery;
if ($aTopicIdNeedQuery) {
if ($data = $this->oMapper->GetTopicsQuestionVoteByArray($aTopicIdNeedQuery, $iUserId)) {
foreach ($data as $oTopicVote) {
// * Добавляем к результату и сохраняем в кеш
$aTopicsQuestionVote[$oTopicVote->getTopicId()] = $oTopicVote;
E::ModuleCache()->Set($oTopicVote, "topic_question_vote_{$oTopicVote->getTopicId()}_{$oTopicVote->getVoterId()}", array(), 60 * 60 * 24 * 4);
$aTopicIdNeedStore = array_diff($aTopicIdNeedStore, array($oTopicVote->getTopicId()));
}
}
}
// * Сохраняем в кеш запросы не вернувшие результата
foreach ($aTopicIdNeedStore as $sId) {
E::ModuleCache()->Set(null, "topic_question_vote_{$sId}_{$iUserId}", array(), 60 * 60 * 24 * 4);
}
// * Сортируем результат согласно входящему массиву
$aTopicsQuestionVote = F::Array_SortByKeysArray($aTopicsQuestionVote, $aTopicsId);
return $aTopicsQuestionVote;
}
示例2: GetFriendsByArray
/**
* Получить список отношений друзей
*
* @param int|array $aUsersId - Список ID пользователей проверяемых на дружбу
* @param int $iUserId - ID пользователя у которого проверяем друзей
*
* @return ModuleUser_EntityFriend[]
*/
public function GetFriendsByArray($aUsersId, $iUserId)
{
if (Config::Get('sys.cache.solid')) {
return $this->GetFriendsByArraySolid($aUsersId, $iUserId);
}
if (!$aUsersId) {
return array();
} elseif (!is_array($aUsersId)) {
$aUsersId = array($aUsersId);
} else {
$aUsersId = array_unique($aUsersId);
}
$aFriends = array();
$aUserIdNotNeedQuery = array();
// * Делаем мульти-запрос к кешу
$aCacheKeys = F::Array_ChangeValues($aUsersId, 'user_friend_', '_' . $iUserId);
if (false !== ($data = E::ModuleCache()->Get($aCacheKeys))) {
// * проверяем что досталось из кеша
foreach ($aCacheKeys as $iIndex => $sKey) {
if (array_key_exists($sKey, $data)) {
if ($data[$sKey]) {
$aFriends[$data[$sKey]->getFriendId()] = $data[$sKey];
} else {
$aUserIdNotNeedQuery[] = $aUsersId[$iIndex];
}
}
}
}
// * Смотрим каких френдов не было в кеше и делаем запрос в БД
$aUserIdNeedQuery = array_diff($aUsersId, array_keys($aFriends));
$aUserIdNeedQuery = array_diff($aUserIdNeedQuery, $aUserIdNotNeedQuery);
$aUserIdNeedStore = $aUserIdNeedQuery;
if ($aUserIdNeedQuery) {
if ($data = $this->oMapper->GetFriendsByArrayId($aUserIdNeedQuery, $iUserId)) {
foreach ($data as $oFriend) {
// * Добавляем к результату и сохраняем в кеш
$aFriends[$oFriend->getFriendId($iUserId)] = $oFriend;
/**
* Тут кеш нужно будет продумать как-то по другому.
* Пока не трогаю, ибо этот код все равно не выполняется.
* by Kachaev
*/
E::ModuleCache()->Set($oFriend, "user_friend_{$oFriend->getFriendId()}_{$oFriend->getUserId()}", array(), 'P4D');
$aUserIdNeedStore = array_diff($aUserIdNeedStore, array($oFriend->getFriendId()));
}
}
}
// * Сохраняем в кеш запросы не вернувшие результата
foreach ($aUserIdNeedStore as $sId) {
E::ModuleCache()->Set(null, "user_friend_{$sId}_{$iUserId}", array(), 'P4D');
}
// * Сортируем результат согласно входящему массиву
$aFriends = F::Array_SortByKeysArray($aFriends, $aUsersId);
return $aFriends;
}
示例3: GetTalkUsersByArray
/**
* Получить список отношений разговор-юзер по списку айдишников
*
* @param array $aTalksId Список ID сообщений
* @param int $iUserId ID пользователя
*
* @return array
*/
public function GetTalkUsersByArray($aTalksId, $iUserId)
{
if (!is_array($aTalksId)) {
$aTalksId = array($aTalksId);
}
$aTalksId = array_unique($aTalksId);
$aTalkUsers = array();
$aTalkIdNotNeedQuery = array();
// Делаем мульти-запрос к кешу
$aCacheKeys = F::Array_ChangeValues($aTalksId, 'talk_user_', '_' . $iUserId);
if (false !== ($data = E::ModuleCache()->Get($aCacheKeys))) {
// проверяем что досталось из кеша
foreach ($aCacheKeys as $iIndex => $sKey) {
if (array_key_exists($sKey, $data)) {
if ($data[$sKey]) {
$aTalkUsers[$data[$sKey]->getTalkId()] = $data[$sKey];
} else {
$aTalkIdNotNeedQuery[] = $aTalksId[$iIndex];
}
}
}
}
// Смотрим чего не было в кеше и делаем запрос в БД
$aTalkIdNeedQuery = array_diff($aTalksId, array_keys($aTalkUsers));
$aTalkIdNeedQuery = array_diff($aTalkIdNeedQuery, $aTalkIdNotNeedQuery);
$aTalkIdNeedStore = $aTalkIdNeedQuery;
if ($aTalkIdNeedQuery) {
if ($data = $this->oMapper->GetTalkUserByArray($aTalkIdNeedQuery, $iUserId)) {
foreach ($data as $oTalkUser) {
// Добавляем к результату и сохраняем в кеш
$aTalkUsers[$oTalkUser->getTalkId()] = $oTalkUser;
E::ModuleCache()->Set($oTalkUser, "talk_user_{$oTalkUser->getTalkId()}_{$oTalkUser->getUserId()}", array("update_talk_user_{$oTalkUser->getTalkId()}"), 60 * 60 * 24 * 4);
$aTalkIdNeedStore = array_diff($aTalkIdNeedStore, array($oTalkUser->getTalkId()));
}
}
}
// Сохраняем в кеш запросы не вернувшие результата
foreach ($aTalkIdNeedStore as $sId) {
E::ModuleCache()->Set(null, "talk_user_{$sId}_{$iUserId}", array("update_talk_user_{$sId}"), 60 * 60 * 24 * 4);
}
// Сортируем результат согласно входящему массиву
$aTalkUsers = F::Array_SortByKeysArray($aTalkUsers, $aTalksId);
return $aTalkUsers;
}
示例4: GetBlogUsersByArrayBlog
/**
* Получить список отношений блог-юзер по списку айдишников
*
* @param array|int $aBlogId Список ID блогов
* @param int $iUserId ID пользователя
*
* @return ModuleBlog_EntityBlogUser[]
*/
public function GetBlogUsersByArrayBlog($aBlogId, $iUserId)
{
if (!$aBlogId) {
return array();
}
if (Config::Get('sys.cache.solid')) {
return $this->GetBlogUsersByArrayBlogSolid($aBlogId, $iUserId);
}
if (!is_array($aBlogId)) {
$aBlogId = array(intval($aBlogId));
}
$aBlogId = array_unique($aBlogId);
$aBlogUsers = array();
$aBlogIdNotNeedQuery = array();
// * Делаем мульти-запрос к кешу
$aCacheKeys = F::Array_ChangeValues($aBlogId, 'blog_relation_user_', '_' . $iUserId);
if (false !== ($data = E::ModuleCache()->Get($aCacheKeys))) {
// * проверяем что досталось из кеша
foreach ($aCacheKeys as $iIndex => $sKey) {
if (array_key_exists($sKey, $data)) {
if ($data[$sKey]) {
$aBlogUsers[$data[$sKey]->getBlogId()] = $data[$sKey];
} else {
$aBlogIdNotNeedQuery[] = $aBlogId[$iIndex];
}
}
}
}
// * Смотрим каких блогов не было в кеше и делаем запрос в БД
$aBlogIdNeedQuery = array_diff($aBlogId, array_keys($aBlogUsers));
$aBlogIdNeedQuery = array_diff($aBlogIdNeedQuery, $aBlogIdNotNeedQuery);
$aBlogIdNeedStore = $aBlogIdNeedQuery;
if ($aBlogIdNeedQuery) {
if ($data = $this->oMapper->GetBlogUsersByArrayBlog($aBlogIdNeedQuery, $iUserId)) {
foreach ($data as $oBlogUser) {
// * Добавляем к результату и сохраняем в кеш
$aBlogUsers[$oBlogUser->getBlogId()] = $oBlogUser;
E::ModuleCache()->Set($oBlogUser, "blog_relation_user_{$oBlogUser->getBlogId()}_{$oBlogUser->getUserId()}", array(), 'P4D');
$aBlogIdNeedStore = array_diff($aBlogIdNeedStore, array($oBlogUser->getBlogId()));
}
}
}
// * Сохраняем в кеш запросы не вернувшие результата
foreach ($aBlogIdNeedStore as $sId) {
E::ModuleCache()->Set(null, "blog_relation_user_{$sId}_{$iUserId}", array(), 'P4D');
}
// * Сортируем результат согласно входящему массиву
$aBlogUsers = F::Array_SortByKeysArray($aBlogUsers, $aBlogId);
return $aBlogUsers;
}
示例5: func_array_sort_by_keys
function func_array_sort_by_keys($array, $aKeys)
{
return F::Array_SortByKeysArray($array, $aKeys);
}
示例6: GetCommentsByArrayId
/**
* Список комментов по ID
*
* @param array|int $aCommentsId Список ID комментариев
*
* @return array
*/
public function GetCommentsByArrayId($aCommentsId)
{
if (!$aCommentsId) {
return array();
}
if (Config::Get('sys.cache.solid')) {
return $this->GetCommentsByArrayIdSolid($aCommentsId);
}
if (!is_array($aCommentsId)) {
$aCommentsId = array($aCommentsId);
}
$aCommentsId = array_unique($aCommentsId);
$aComments = array();
$aCommentIdNotNeedQuery = array();
// * Делаем мульти-запрос к кешу
$aCacheKeys = F::Array_ChangeValues($aCommentsId, 'comment_');
if (false !== ($data = E::ModuleCache()->Get($aCacheKeys))) {
// * Проверяем что досталось из кеша
foreach ($aCacheKeys as $iIndex => $sKey) {
if (array_key_exists($sKey, $data)) {
if ($data[$sKey]) {
$aComments[$data[$sKey]->getId()] = $data[$sKey];
} else {
$aCommentIdNotNeedQuery[] = $aCommentsId[$iIndex];
}
}
}
}
// * Смотрим каких комментов не было в кеше и делаем запрос в БД
$aCommentIdNeedQuery = array_diff($aCommentsId, array_keys($aComments));
$aCommentIdNeedQuery = array_diff($aCommentIdNeedQuery, $aCommentIdNotNeedQuery);
$aCommentIdNeedStore = $aCommentIdNeedQuery;
if ($aCommentIdNeedQuery) {
if ($data = $this->oMapper->GetCommentsByArrayId($aCommentIdNeedQuery)) {
foreach ($data as $oComment) {
// * Добавляем к результату и сохраняем в кеш
$aComments[$oComment->getId()] = $oComment;
E::ModuleCache()->Set($oComment, "comment_{$oComment->getId()}", array(), 'P4D');
$aCommentIdNeedStore = array_diff($aCommentIdNeedStore, array($oComment->getId()));
}
}
}
// * Сохраняем в кеш запросы не вернувшие результата
foreach ($aCommentIdNeedStore as $nId) {
E::ModuleCache()->Set(null, "comment_{$nId}", array(), 'P4D');
}
// * Сортируем результат согласно входящему массиву
$aComments = F::Array_SortByKeysArray($aComments, $aCommentsId);
return $aComments;
}