【问题标题】:How can I simplify this function - return key value from array?如何简化此功能 - 从数组返回键值?
【发布时间】:2019-11-08 01:24:28
【问题描述】:

我编写了以下函数,它返回一个键的值,该键是一个 cPanel 帐户的帐户前缀。 [前缀] = 'oneclick_'

这个函数可以工作,但我只是一个初学者,我相信有一个更简单更好的方法来编写这个函数。

<?php
// Get data from cPanel API
$array = $cp_db_restrictions['cpanelresult']['result']['data'];

//Pass array of $data to function
db_prefix( $array );

//Function accepts array of $data
function db_prefix( $array ) {
  if( count( $array ) > 0 ) {
      return $array['prefix'];
  } else {
      return "No prefix";
  }
}
?>

<?php echo db_prefix($array); ?>

函数回显“oneclick_”

编辑: 这是返回数组的代码:

$cp_db_restrictions = $cpanel->uapi(
      'Mysql', 'get_restrictions'
  );

但是,我不太确定如何将其添加到函数中。当我尝试时,我收到以下错误消息:

注意:未定义变量:...中的数组

致命错误:未捕获的错误:调用成员函数 uapi() on null in...

解决方案*

所以,感谢尼克的回答,这里是解决方案。您必须确保在文档顶部和相同的 PHP 标记中声明 cPanel 类。

<?php
include("/usr/local/cpanel/php/cpanel.php"); // Instantiate the CPANEL object.
$cpanel = new CPANEL();

function db_prefix($cpanel) {
      $cp_db_restrictions = $cpanel->uapi('Mysql', 'get_restrictions');
      $array = $cp_db_restrictions['cpanelresult']['result']['data'];
      return $array['prefix'] ?? 'No prefix';
} ?>
<?php echo db_prefix($cpanel); ?>

【问题讨论】:

  • 可能使用$array['prefix'] ?? 'No prefix' 来检索值(如果存在),或者返回默认值

标签: php arrays function


【解决方案1】:

在 PHP7 中,您可以只使用空合并运算符 ??:

echo $array['prefix'] ?? 'No prefix';

【讨论】:

  • 有没有办法将数组放置在函数中,而不是通过参数传递它?
  • @HansDesjarlais 您可以在函数内将其声明为全局变量 (global $array),但通常认为将变量作为参数传递是更好的做法。您的另一种选择可能是在您的函数中包含生成 $cp_db_restrictions 数组的代码,以便它不需要参数。
  • 这就是我遇到的问题。要么我做错了,要么不能在函数中调用 cPanel API 调用。我认为这没有意义......我编辑了我的问题。
  • @HansDesjarlais 是的,不幸的是,您仍然会遇到必须将变量传递给函数的问题(在这种情况下,它将是 $cpanel - 尽管这将是一个更合理的变量用作全球)但它可能更干净,例如3v4l.org/P9jmb
  • 你的代码做到了。查看解决方案的编辑。
猜你喜欢
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多