【问题标题】:How to assign values to multiple variables using ternary operator in php?如何在php中使用三元运算符为多个变量赋值?
【发布时间】:2019-09-02 22:16:18
【问题描述】:

我使用 if 语句在 codeigniter 中完成了以下代码来实现我的逻辑,但我想使用三元运算符来完成:

<?php
     $payment_via = $this->input->post('payment');

     if($payment_via == "bank"){
        $this->page_data['message_type'] = "paid_via_bank"; 
        $this->page_data['message'] = "You have Successfully Subscribed plan via Bank cheque.";
     }else{
        $this->page_data['message_type'] = "paid_via_online"; 
        $this->page_data['message'] = "You have Successfully Subscribed plan via Online payment.";            
     }

     $this->load->view('payment/checkout_msg', $this->page_data);

我知道我可以为单个变量赋值,但我想在一个三元表达式中为多个变量赋值。我该怎么做?

【问题讨论】:

  • 我认为使用三元表达式不会提高可读性和可维护性。我应该保留你当前的代码。
  • 由于您没有多个条件,您可以将$msg_type$msg分别设置为默认值paid_via_online...via Online payment.else 可以删除。
  • 此外,$msg$msg_type 变量是多余的,如果您不打算在 load-&gt;view 下方使用它。将值直接分配给page_data 键。
  • 确定@ViswalingaSuryaS 不错的建议,我会这样做,谢谢。

标签: php codeigniter variables variable-assignment ternary-operator


【解决方案1】:

当我尝试和使用许多解决方法时,我发现了一个完全按照我想要的方式工作的方法,如下所示:

<?php 

      $payment_via = $this->input->post('payment');
      ($payment_via == "bank") ? (($this->page_data['message_type'] = "paid_via_bank") && ($$this->page_data['message'] = "You have Successfully Subscribed plan via Bank cheque.")) : (($this->page_data['message_type'] = "paid_via_online") && ( $this->page_data['message'] = 'You have Successfully Subscribed plan via Online payment.'));                        

      $this->load->view('demo/checkout_msg', $this->page_data);

希望对某人有所帮助。

【讨论】:

  • 虽然两个代码示例都可以工作并且我认为做同样的事情,但就可读性而言,第一个示例在视觉上会容易得多。这反过来意味着对代码的任何修改都更容易实现,任何潜在的错误也更容易被发现。各有千秋!
  • 同意@JimGrant,这段代码也带来了无用的困难
  • 如果您尝试最小化您的代码 - 那么您应该将消息直接分配给$this-&gt;page_data['message_type'],而不需要任何中间变量。
  • @JimGrant,我同意这不是一个好方法,但至少我发现了一些新东西,所以我在这里分享了它。
猜你喜欢
  • 2021-11-16
  • 2012-02-14
  • 2021-03-30
  • 2023-04-03
  • 2021-11-23
  • 1970-01-01
  • 2014-10-11
  • 2013-06-28
  • 1970-01-01
相关资源
最近更新 更多