本文整理汇总了PHP中array_keys函数的典型用法代码示例。如果您正苦于以下问题:PHP array_keys函数的具体用法?PHP array_keys怎么用?PHP array_keys使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了array_keys函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getLinkDefsInFieldMeta
/**
* Get link definition defined in 'fields' metadata. In linkDefs can be used as value (e.g. "type": "hasChildren") and/or variables (e.g. "entityName":"{entity}"). Variables should be defined into fieldDefs (in 'entityDefs' metadata).
*
* @param string $entityName
* @param array $fieldDef
* @param array $linkFieldDefsByType
* @return array | null
*/
public function getLinkDefsInFieldMeta($entityName, $fieldDef, array $linkFieldDefsByType = null)
{
if (!isset($fieldDefsByType)) {
$fieldDefsByType = $this->getFieldDefsByType($fieldDef);
if (!isset($fieldDefsByType['linkDefs'])) {
return null;
}
$linkFieldDefsByType = $fieldDefsByType['linkDefs'];
}
foreach ($linkFieldDefsByType as $paramName => &$paramValue) {
if (preg_match('/{(.*?)}/', $paramValue, $matches)) {
if (in_array($matches[1], array_keys($fieldDef))) {
$value = $fieldDef[$matches[1]];
} else {
if (strtolower($matches[1]) == 'entity') {
$value = $entityName;
}
}
if (isset($value)) {
$paramValue = str_replace('{' . $matches[1] . '}', $value, $paramValue);
}
}
}
return $linkFieldDefsByType;
}
示例2: cp
/**
* s2Member's PayPal Auto-Return/PDT handler (inner processing routine).
*
* @package s2Member\PayPal
* @since 110720
*
* @param array $vars Required. An array of defined variables passed by {@link s2Member\PayPal\c_ws_plugin__s2member_paypal_return_in::paypal_return()}.
* @return array|bool The original ``$paypal`` array passed in (extracted) from ``$vars``, or false when conditions do NOT apply.
*/
public static function cp($vars = array())
{
extract($vars);
foreach (array_keys(get_defined_vars()) as $__v) {
$__refs[$__v] =& ${$__v};
}
do_action("ws_plugin__s2member_during_paypal_return_before_no_return_data", get_defined_vars());
unset($__refs, $__v);
$paypal["s2member_log"][] = "No Return-Data. Customer MUST wait for Email Confirmation.";
$paypal["s2member_log"][] = "Note. This can sometimes happen when/if you are offering an Initial/Trial Period. There are times when a Payment Gateway will NOT supply s2Member with any data immediately after checkout. When/if this happens, s2Member must process the transaction via IPN only (i.e. behind-the-scene), and the Customer must wait for Email Confirmation in these cases.";
$paypal["s2member_log"][] = var_export($_REQUEST, true);
foreach (array_keys(get_defined_vars()) as $__v) {
$__refs[$__v] =& ${$__v};
}
do_action("ws_plugin__s2member_during_paypal_return_during_no_return_data", get_defined_vars());
unset($__refs, $__v);
if ($custom_success_redirection) {
$paypal["s2member_log"][] = "Redirecting Customer to a custom URL: " . $custom_success_redirection . ".";
wp_redirect($custom_success_redirection);
} else {
$paypal["s2member_log"][] = "Redirecting Customer to the Home Page (after asking Customer to check their email).";
echo c_ws_plugin__s2member_return_templates::return_template($paypal["subscr_gateway"], _x('<strong>Thank you! (you MUST check your email before proceeding).</strong><br /><br />* Note: It can take <em>(up to 15 minutes)</em> for Email Confirmation with important details. If you don\'t receive email confirmation in the next 15 minutes, please contact Support.', "s2member-front", "s2member") . ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"] || c_ws_plugin__s2member_utils_conds::pro_is_installed() && !empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["pro_" . $paypal["subscr_gateway"] . "_sandbox"]) ? '<br /><br />' . _x('<strong>** Sandbox Mode **</strong> You may NOT receive this Email in Sandbox Mode. Sandbox addresses are usually bogus (for testing).', "s2member-front", "s2member") : ''), _x("Back To Home Page", "s2member-front", "s2member"), home_url("/"));
}
foreach (array_keys(get_defined_vars()) as $__v) {
$__refs[$__v] =& ${$__v};
}
do_action("ws_plugin__s2member_during_paypal_return_after_no_return_data", get_defined_vars());
unset($__refs, $__v);
return apply_filters("c_ws_plugin__s2member_paypal_return_in_no_tx_data", $paypal, get_defined_vars());
}
示例3: getAllClassNames
public function getAllClassNames()
{
if (null === $this->classCache) {
$this->initialize();
}
$classes = array();
if ($this->paths) {
foreach ((array) $this->paths as $path) {
if (!is_dir($path)) {
throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
}
$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path), \RecursiveIteratorIterator::LEAVES_ONLY);
foreach ($iterator as $file) {
$fileName = $file->getBasename($this->fileExtension);
if ($fileName == $file->getBasename() || $fileName == $this->globalBasename) {
continue;
}
// NOTE: All files found here means classes are not transient!
if (isset($this->prefixes[$path])) {
$classes[] = $this->prefixes[$path] . '\\' . str_replace('.', '\\', $fileName);
} else {
$classes[] = str_replace('.', '\\', $fileName);
}
}
}
}
return array_merge($classes, array_keys($this->classCache));
}
示例4: import
/**
*
* @param array $current_import
* @return bool
*/
function import(array $current_import)
{
// fetch the remote content
$html = wp_remote_get($current_import['file']);
// Something failed
if (is_wp_error($html)) {
$redirect_url = get_admin_url(get_current_blog_id(), '/tools.php?page=pb_import');
error_log('\\PressBooks\\Import\\Html import error, wp_remote_get() ' . $html->get_error_message());
$_SESSION['pb_errors'][] = $html->get_error_message();
$this->revokeCurrentImport();
\Pressbooks\Redirect\location($redirect_url);
}
$url = parse_url($current_import['file']);
// get parent directory (with forward slash e.g. /parent)
$path = dirname($url['path']);
$domain = $url['scheme'] . '://' . $url['host'] . $path;
// get id (there will be only one)
$id = array_keys($current_import['chapters']);
// front-matter, chapter, or back-matter
$post_type = $this->determinePostType($id[0]);
$chapter_parent = $this->getChapterParent();
$body = $this->kneadandInsert($html['body'], $post_type, $chapter_parent, $domain);
// Done
return $this->revokeCurrentImport();
}
示例5: hook_admin_menu_map
/**
* Provide expansion arguments for dynamic menu items, i.e. menu paths
* containing one or more %placeholders.
*
* The map items must be keyed by the dynamic path to expand. Each map item may
* have the following properties:
*
* - parent: The parent menu path to link the expanded items to.
* - arguments: An array of argument sets that will be used in the
* expansion. Each set consists of an array of one or more placeholders with
* an array of possible expansions as value. Upon expansion, each argument
* is combined with every other argument from the set (ie., the cartesian
* product of all arguments is created). The expansion values may be empty,
* that is, you don't need to insert logic to skip map items for which no
* values exist, since admin menu will take care of that.
* - hide: (optional) Used to hide another menu item, usually a superfluous
* "List" item.
*
* @see admin_menu.map.inc
*/
function hook_admin_menu_map()
{
// Expand content types in Structure >> Content types.
// The key denotes the dynamic path to expand to multiple menu items.
$map['admin/structure/types/manage/%node_type'] = array('parent' => 'admin/structure/types', 'hide' => 'admin/structure/types/list', 'arguments' => array(array('%node_type' => array_keys(node_type_get_types()))));
return $map;
}
示例6: transformToRegex
private function transformToRegex()
{
$patternArray = $this->getPatterns();
$tokenArray = $this->routeArray['tokens'] ?? [];
$routeArray = $this->routeArray['routes'] ?? [];
$defaultsArray = $this->routeArray['defaults'] ?? [];
foreach ($routeArray as $name => $route) {
$patternKey = array_keys($patternArray);
$tokens = [];
$defaults = [];
$subpatterns = [];
$search = [];
$m = [];
if (preg_match_all('/{(\\w+)}/', $route['path'], $m)) {
foreach ($m[1] as $token) {
$search[] = "{{$token}}";
$tokens[$token] = str_replace($patternKey, $patternArray, $route['tokens'][$token] ?? $tokenArray[$token]);
$subpatterns[$token] = "(?P<{$token}>{$tokens[$token]})";
$tokens[$token] = $this->preparePattern($tokens[$token]);
$defaultValue = $route['defaults'][$token] ?? $defaultsArray[$token] ?? [];
if (!empty($defaultValue)) {
$defaults[$token] = $defaultValue;
}
}
}
$route['tokens'] = $tokens;
$route['defaults'] = $defaults;
$route['route'] = $route['path'];
$route['path'] = str_replace($search, $subpatterns, $route['path']);
$route['path'] = $this->preparePattern(str_replace($patternKey, $patternArray, $route['path']));
$this->validPattern($route['path'], (string) $name);
$this->convertedRouteArray[$name] = $route;
}
}
示例7: _process
public function _process(Invoice $invoice, Am_Request $request, Am_Paysystem_Result $result)
{
$m = $this->getConfig('methods');
if (@count($m) == 1) {
$a = new Am_Paysystem_Action_Form(self::URL . $m[0] . '/event/');
} else {
$a = new Am_Paysystem_Action_HtmlTemplate_Micropayment($this->getDir(), 'micropayment-confirm.phtml');
$methods = array();
if (@count($m)) {
$a->url = self::URL . $m[0] . '/event/';
foreach ($m as $title) {
$methods[self::URL . $title . '/event/'] = $this->getConfig($title . '.title');
}
} else {
foreach ($this->getConfig() as $k => $v) {
if (is_array($v) && !empty($v['title'])) {
$methods[self::URL . $k . '/event/'] = $v['title'];
}
}
$a->url = array_shift(array_keys($methods));
}
$a->methods = $methods;
}
$a->project = $this->getConfig('project');
$a->amount = $invoice->first_total * 100;
$a->freepaymentid = $invoice->public_id;
$a->seal = md5("project={$a->project}&amount={$a->amount}&freepaymentid={$a->freepaymentid}" . $this->getConfig('key'));
$result->setAction($a);
}
示例8: action_list
/**
* displays the topics on a forums
* @return [type] [description]
*/
public function action_list()
{
//in case performing a search
if (strlen($search = core::get('search')) >= 3) {
return $this->action_search($search);
}
$this->template->styles = array('css/forums.css' => 'screen');
$this->template->scripts['footer'][] = 'js/forums.js';
$forum = new Model_Forum();
$forum->where('seoname', '=', $this->request->param('forum', NULL))->cached()->limit(1)->find();
if ($forum->loaded()) {
//template header
$this->template->title = $forum->name . ' - ' . __('Forum');
$this->template->meta_description = $forum->description;
Breadcrumbs::add(Breadcrumb::factory()->set_title($forum->name));
//count all topics
$count = DB::select(array(DB::expr('COUNT("id_post")'), 'count'))->from(array('posts', 'p'))->where('id_post_parent', 'IS', NULL)->where('id_forum', '=', $forum->id_forum)->cached()->execute();
$count = array_keys($count->as_array('count'));
$pagination = Pagination::factory(array('view' => 'pagination', 'total_items' => isset($count[0]) ? $count[0] : 0))->route_params(array('controller' => $this->request->controller(), 'action' => $this->request->action(), 'forum' => $this->request->param('forum')));
$pagination->title($this->template->title);
//getting all the topic for the forum
$topics = DB::select('p.*')->select(array(DB::select(DB::expr('COUNT("id_post")'))->from(array('posts', 'pc'))->where('pc.id_post_parent', '=', DB::expr(Database::instance('default')->table_prefix() . 'p.id_post'))->where('pc.id_forum', '=', $forum->id_forum)->where('pc.status', '=', Model_Post::STATUS_ACTIVE)->group_by('pc.id_post_parent'), 'count_replies'))->select(array(DB::select('ps.created')->from(array('posts', 'ps'))->where('ps.id_post', '=', DB::expr(Database::instance('default')->table_prefix() . 'p.id_post'))->or_where('ps.id_post_parent', '=', DB::expr(Database::instance('default')->table_prefix() . 'p.id_post'))->where('ps.id_forum', '=', $forum->id_forum)->where('ps.status', '=', Model_Post::STATUS_ACTIVE)->order_by('ps.created', 'DESC')->limit(1), 'last_message'))->from(array('posts', 'p'))->where('id_post_parent', 'IS', NULL)->where('id_forum', '=', $forum->id_forum)->where('status', '=', Model_Post::STATUS_ACTIVE)->order_by('last_message', 'DESC')->limit($pagination->items_per_page)->offset($pagination->offset)->as_object()->execute();
$pagination = $pagination->render();
$this->template->bind('content', $content);
$this->template->content = View::factory('pages/forum/list', array('topics' => $topics, 'forum' => $forum, 'pagination' => $pagination));
} else {
//throw 404
throw HTTP_Exception::factory(404, __('Page not found'));
}
}
示例9: beforeAction
public function beforeAction($action)
{
if (!$this->owner instanceof MobileController && !in_array($this->owner->action->getId(), array_keys($this->actions()))) {
return true;
}
Yii::app()->user->loginUrl = array('/mobile/login');
Yii::app()->params->isMobileApp = true;
// fix profile linkable behavior since model was instantiated before action
if (!preg_match('/\\/mobileView$/', Yii::app()->params->profile->asa('X2LinkableBehavior')->viewRoute)) {
Yii::app()->params->profile->asa('X2LinkableBehavior')->viewRoute .= '/mobileView';
}
$this->dataUrl = $this->owner->createAbsoluteUrl($action->getId());
$this->pageId = lcfirst(preg_replace('/Controller$/', '', get_class($this->owner))) . '-' . $action->getId();
$cookie = new CHttpCookie('isMobileApp', 'true');
// create cookie
$cookie->expire = 2147483647;
// max expiration time
Yii::app()->request->cookies['isMobileApp'] = $cookie;
// save cookie
if (!$this->owner instanceof MobileController) {
$this->owner->layout = $this->pathAliasBase . 'views.layouts.main';
if ($this->owner->module) {
$this->owner->setAssetsUrl(Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias($this->pathAliasBase . 'assets'), false, -1, true));
$this->owner->module->assetsUrl = $this->owner->assetsUrl;
Yii::app()->clientScript->packages = MobileModule::getPackages($this->owner->module->assetsUrl);
} else {
Yii::app()->clientScript->packages = MobileModule::getPackages($this->owner->assetsUrl);
}
}
return true;
}
示例10: execute
public function execute(PhutilArgumentParser $args)
{
$console = PhutilConsole::getConsole();
$ids = $args->getArg('id');
if (!$ids) {
throw new PhutilArgumentUsageException(pht("Use the '%s' flag to specify one or more SMS messages to show.", '--id'));
}
$messages = id(new PhabricatorSMS())->loadAllWhere('id IN (%Ld)', $ids);
if ($ids) {
$ids = array_fuse($ids);
$missing = array_diff_key($ids, $messages);
if ($missing) {
throw new PhutilArgumentUsageException(pht('Some specified SMS messages do not exist: %s', implode(', ', array_keys($missing))));
}
}
$last_key = last_key($messages);
foreach ($messages as $message_key => $message) {
$info = array();
$info[] = pht('PROPERTIES');
$info[] = pht('ID: %d', $message->getID());
$info[] = pht('Status: %s', $message->getSendStatus());
$info[] = pht('To: %s', $message->getToNumber());
$info[] = pht('From: %s', $message->getFromNumber());
$info[] = null;
$info[] = pht('BODY');
$info[] = $message->getBody();
$info[] = null;
$console->writeOut('%s', implode("\n", $info));
if ($message_key != $last_key) {
$console->writeOut("\n%s\n\n", str_repeat('-', 80));
}
}
}
示例11: validatePartial
/**
* Validates a partial array. Some data may be missing from the given $array, then it will be taken from the
* full array.
*
* Since the array can be incomplete, this method does not validate required parameters.
*
* @param array $array
* @param array $fullArray
*
* @return bool
*/
public function validatePartial(array $array, array $fullArray)
{
$unvalidatedFields = array_flip(array_keys($array));
// field validators
foreach ($this->validators as $field => $validator) {
unset($unvalidatedFields[$field]);
// if the value is present
if (isset($array[$field])) {
// validate it if a validator is given, skip it otherwise
if ($validator && !$validator->validate($array[$field])) {
$this->setError($validator->getError());
return false;
}
}
}
// check if any unsupported fields remain
if ($unvalidatedFields) {
reset($unvalidatedFields);
$field = key($unvalidatedFields);
$this->error($this->messageUnsupported, $field);
return false;
}
// post validators
foreach ($this->postValidators as $validator) {
if (!$validator->validatePartial($array, $fullArray)) {
$this->setError($validator->getError());
return false;
}
}
return true;
}
示例12: convertDateMomentToPhp
public static function convertDateMomentToPhp($format)
{
$tokens = ["M" => "n", "Mo" => "nS", "MM" => "m", "MMM" => "M", "MMMM" => "F", "D" => "j", "Do" => "jS", "DD" => "d", "DDD" => "z", "DDDo" => "zS", "DDDD" => "zS", "d" => "w", "do" => "wS", "dd" => "D", "ddd" => "D", "dddd" => "l", "e" => "w", "E" => "N", "w" => "W", "wo" => "WS", "ww" => "W", "W" => "W", "Wo" => "WS", "WW" => "W", "YY" => "y", "YYYY" => "Y", "gg" => "o", "gggg" => "o", "GG" => "o", "GGGG" => "o", "A" => "A", "a" => "a", "H" => "G", "HH" => "H", "h" => "g", "hh" => "h", "m" => "i", "mm" => "i", "s" => "s", "ss" => "s", "S" => "", "SS" => "", "SSS" => "", "z or zz" => "T", "Z" => "P", "ZZ" => "O", "X" => "U", "LT" => "g:i A", "L" => "m/d/Y", "l" => "n/j/Y", "LL" => "F jS Y", "ll" => "M j Y", "LLL" => "F js Y g:i A", "lll" => "M j Y g:i A", "LLLL" => "l, F jS Y g:i A", "llll" => "D, M j Y g:i A"];
// find all tokens from string, using regular expression
$regExp = "/(\\[[^\\[]*\\])|(\\\\)?(LT|LL?L?L?|l{1,4}|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/";
$matches = array();
preg_match_all($regExp, $format, $matches);
// if there is no match found then return the string as it is
// TODO: might return escaped string
if (empty($matches) || is_array($matches) === false) {
return $format;
}
// to match with extracted tokens
$momentTokens = array_keys($tokens);
$phpMatches = array();
// ----------------------------------
foreach ($matches[0] as $id => $match) {
// if there is a matching php token in token list
if (in_array($match, $momentTokens)) {
// use the php token instead
$string = $tokens[$match];
} else {
$string = $match;
}
$phpMatches[$id] = $string;
}
// join and return php specific tokens
return implode("", $phpMatches);
}
示例13: art_load_config
function art_load_config()
{
static $moduleConfig;
if (isset($moduleConfig[$GLOBALS["artdirname"]])) {
return $moduleConfig[$GLOBALS["artdirname"]];
}
//load_functions("config");
//$moduleConfig[$GLOBALS["artdirname"]] = mod_loadConfig($GLOBALS["artdirname"]);
if (isset($GLOBALS["xoopsModule"]) && is_object($GLOBALS["xoopsModule"]) && $GLOBALS["xoopsModule"]->getVar("dirname", "n") == $GLOBALS["artdirname"]) {
if (!empty($GLOBALS["xoopsModuleConfig"])) {
$moduleConfig[$GLOBALS["artdirname"]] =& $GLOBALS["xoopsModuleConfig"];
} else {
return null;
}
} else {
$module_handler =& xoops_gethandler('module');
$module = $module_handler->getByDirname($GLOBALS["artdirname"]);
$config_handler =& xoops_gethandler('config');
$criteria = new CriteriaCompo(new Criteria('conf_modid', $module->getVar('mid')));
$configs =& $config_handler->getConfigs($criteria);
foreach (array_keys($configs) as $i) {
$moduleConfig[$GLOBALS["artdirname"]][$configs[$i]->getVar('conf_name')] = $configs[$i]->getConfValueForOutput();
}
unset($configs);
}
if ($customConfig = @(include XOOPS_ROOT_PATH . "/modules/" . $GLOBALS["artdirname"] . "/include/plugin.php")) {
$moduleConfig[$GLOBALS["artdirname"]] = array_merge($moduleConfig[$GLOBALS["artdirname"]], $customConfig);
}
return $moduleConfig[$GLOBALS["artdirname"]];
}
示例14: createResponse
/**
* Handles response for csv-request.
*
* @param ViewHandler $handler
* @param View $view
* @param Request $request
* @param string $format
*
* @return Response
*
* @throws ObjectNotSupportedException
*/
public function createResponse(ViewHandler $handler, View $view, Request $request, $format)
{
if (!$view->getData() instanceof ListRepresentation) {
throw new ObjectNotSupportedException($view);
}
$viewData = $view->getData();
$data = new CallbackCollection($viewData->getData(), [$this, 'prepareData']);
$fileName = sprintf('%s.csv', $viewData->getRel());
$config = new ExporterConfig();
$exporter = new Exporter($config);
$data->rewind();
if ($row = $data->current()) {
$config->setColumnHeaders(array_keys($row));
}
$config->setDelimiter($this->convertValue($request->get('delimiter', ';'), self::$delimiterMap));
$config->setNewline($this->convertValue($request->get('newLine', '\\n'), self::$newLineMap));
$config->setEnclosure($request->get('enclosure', '"'));
$config->setEscape($request->get('escape', '\\'));
$response = new StreamedResponse();
$disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $fileName, $fileName);
$response->headers->set('Content-Type', 'text/csv');
$response->headers->set('Content-Disposition', $disposition);
$response->setCallback(function () use($data, $exporter) {
$exporter->export('php://output', $data);
});
$response->send();
return $response;
}
示例15: run
public function run($args)
{
global $connect, $dbprefix;
$field = $args[0];
$srid = $_SESSION['srid'];
$sid = $_POST['sid'];
$query = "SELECT {$field} FROM {$dbprefix}survey_{$sid} WHERE id = {$srid}";
if (!($result = $connect->Execute($query))) {
throw new Exception("Couldn't get question '{$field}' answer<br />" . $connect->ErrorMsg());
//Checked
}
$row = $result->fetchRow();
$value = $row[$field];
$found = array_keys($args, $value);
if (count($found)) {
while ($e = each($found)) {
if ($e['value'] % 2 != 0) {
// we check this, as only at odd indexes there are 'cases'
return $args[$e['value'] + 1];
}
}
// returns value associated with found 'case'
}
// return empty string if none of cases matches user's answer
return "";
}