未定义的索引,但我不明白为什么

时间:2017-04-04 05:04:37

标签: php

这是我的代码

if (isset($_POST['error']) && $_POST['error'] != 2 && $_POST['error'] != 1) {
    return true;
} else if (isset($_POST['error']) && $_POST['error'] == 2 || $_POST['error'] == 1) {
    return false;
} else {
    return false;
}

请帮忙。   感谢。

3 个答案:

答案 0 :(得分:2)

当您执行&& 时,它会评估所有条件,直到出现错误。当您执行 || 时,它将评估所有条件,直到某些内容为真。由于您的第一个条件评估为false,因此调用了第二个条件,但$_POST['error']不存在。

您可能想要这样做,请注意两个错误的括号。

if(
    isset($_POST['error']) &&
    (
        $_POST['error'] == 2 ||
        $_POST['error'] == 1
    )
)

它也可以更好地重写为。

if(
    isset($_POST['error']) &&
    in_array($_POST['error'], array(1,2))
)

答案 1 :(得分:0)

像奥格瓦说的那样:

  • &&运营商将评估所有条件,直到其中任何一个为假。
  • ||运营商将评估所有条件,直到其中任何一个为真。

解决方案:

class Customer < ActiveRecord::Base

    before_save do
        self.diseases.gsub!(/[\[\]\"]/,"") if attribute_present?("diseases")
    end

      belongs_to :tenant
      validates_uniqueness_of :mobileno

    def self.by_plan_and_tenant(tenant_id)
        tenant = Tenant.find(tenant_id)
        if tenant.plan == 'free'
            tenant.customers
        else
            tenant.customers
        end
    end

    def client
        Twilio::REST::Client.new Rails.application.secrets.twilio_account_sid, Rails.application.secrets.twilio_token
      end

      acct_sid = "Axxxxxxxxxxxxxx"
      auth_token = "6cxxxxxxxxxxxxxxxxxxxxx"
      twilio_no = "+16xxxxxxxxx"
      acct_sid = ENV['twilio_account_sid']
      auth_token = ENV['twilio_token']
      twilio_no = ENV['twilio_no']

      def send (to, body)
        client.account.messages.create(
        :messaging_service_sid => Rails.application.secrets.twilio_messaging_service_sid,
        :from => "+1xxxxxxxxx1",
        :to => '#{mobileno}',
        :body => "Hi. Thanks a lot for signing up with us. Your UID is: #{uid}"
        )
    end
end

答案 2 :(得分:0)

您应该更改以下代码...始终将您的比较与||相关联括号内的。因为||条件检查最后一段代码以找出“真实”值。通过重新编码为.....&amp;&amp; (... || ....),执行将从点&amp;&amp;并且不会执行(.... || .....)part

if (isset($_POST['error']) && $_POST['error'] != 2 && $_POST['error'] != 1) {
    return true;
} else if (isset($_POST['error']) && ($_POST['error'] == 2 || $_POST['error'] == 1)) {
    return false;
} else {
    return false;
}