Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较php中的数组元素_Php - Fatal编程技术网

比较php中的数组元素

比较php中的数组元素,php,Php,我想将数组元素与0或1进行比较。为此,我想选择函数is\u answer\u accepted($aid)返回的我的is\u answer\u accepted 我正在单击一个未被接受的答案(已确认),因此我的已被接受应该为0。不知何故,我的比较失败了,$is\u answer\u accepted['is\u answer\u accepted']=1返回true,即使它肯定是0 function is_answer_accepted($aid) { global $conn;

我想将数组元素与0或1进行比较。为此,我想选择函数
is\u answer\u accepted($aid)
返回的我的
is\u answer\u accepted

我正在单击一个未被接受的答案(已确认),因此我的
已被接受
应该为0。不知何故,我的比较失败了,
$is\u answer\u accepted['is\u answer\u accepted']=1
返回true,即使它肯定是0

function is_answer_accepted($aid) {
    global $conn;
    $query=$conn->prepare("SELECT is_answer_accepted FROM is_answer_accepted(:aid)");
    $query->execute(array($aid));


    return $query->fetch();
}
执行此查询时,如果
solved\u date!=空
,否则为0

CREATE OR REPLACE FUNCTION is_answer_accepted(aid INT)
  returns INTEGER
LANGUAGE plpgsql
AS $$
DECLARE date_solved TIMESTAMP;
  DECLARE answer_accepted INTEGER;
BEGIN
  SELECT solved_date FROM answers WHERE answers.publicationid = aid
  INTO date_solved;

  IF date_solved is null THEN
    answer_accepted := 0;
  ELSE
    answer_accepted :=1;
  END IF;

  return answer_accepted;
END
$$;
答复是:

is_answer_accepted
------------------
                 0
(1 row)
你知道这个比较是怎么错的吗

问候

if($is_answer_accepted['is_answer_accepted'] == 0) {
    delete_all_answer_as_solved($_GET['question']);
    mark_question_as_solved($_GET['answer'], $_GET['question']);
}

if($is_answer_accepted['is_answer_accepted'] == 1) { //Debugger message: $is_answer_accepted: {is_answer_accepted => 0}[1]
    delete_answer_as_solved($_GET['answer'], $_GET['question']);
}

if语句包括赋值不比较

if($is\u answer\u accepted['is\u answer\u accepted']=0)的可能重复项{
表示将值0赋值给变量。请查看标记的重复项。您需要使用
=
==
进行比较(严格比较).
=
声明变量,
=
将进行松散的比较,
==
是严格的比较。我记不起细节,但我认为
=
对数据类型做了一些处理,
==
必须匹配数据类型和值。@Thisgy有两个拇指,就像dupe说的,
=
只会比较值。这可能会得到一些奇怪的响应,因为
“string”==true
实际上会返回一个true比较。
==
需要相同的值和相同的数据类型。因此
“1”===1
将失败,因为它是一个字符串和一个整数。@Qirel啊,所以我的直觉是正确的-只是没有确认哈哈,谢谢:)请避免回答与现有问题明显重复的问题。此外,没有解释的代码转储不是一个好答案。
if($is_answer_accepted['is_answer_accepted'] == 0) {
    delete_all_answer_as_solved($_GET['question']);
    mark_question_as_solved($_GET['answer'], $_GET['question']);
}

if($is_answer_accepted['is_answer_accepted'] == 1) { //Debugger message: $is_answer_accepted: {is_answer_accepted => 0}[1]
    delete_answer_as_solved($_GET['answer'], $_GET['question']);
}