我需要在表格中插入多行
foreach($answers as $answer){
$sql =<<<EOD
INSERT INTO answer(`answer`, `question_id`)
VALUES ('$answer', (SELECT `id` FROM question WHERE `title` = '$title'))
EOD;
result_array[] = $this->db->query($sql);
}
我需要检查每个插入查询是否返回True
。 Php中的控制结构可以让我做类似的事情:
if(each_value in result_array == 'True'){
return 'success';
}
答案 0 :(得分:1)
为了确保你的数组中只有布尔,否则会否定查询函数返回的值(当然,除非它已经返回true / false)。:
result_array[] = !! $this->db->query($sql);
您可以在array(true)
和结果数组(result_array
)之间找到唯一值,然后使用array_diff
查看大小是否等于零:
if (sizeof (array_diff (result_array, array (true)) == 0) {
// all went well
}
如果您生成的数组只包含true
或false
的值,那么您可以使用array_product
破解它,如下所示:
var_dump (array_product (array (true, false, true)));
var_dump (array_product (array (true, true, true)));
输出
int(0)
int(1)
array_product
将数组的所有值相互相乘,并且由于true
评估为整数1而false
评估为整数0,因此我们可以使用此优势。
您可以将array_reduce
与回调一起使用,将数组减少为单个值,例如:
if (array_reduce (result_array, function ($a,$b) {return $a && $b;}, true) == true) {
// all went well
}
这将隐式地将数组的每个值转换为 boolean ,并为您提供您所追求的结果。
内联lambda需要更新版本的PHP,如果lambdas不可用,常规函数名可以用作回调
答案 1 :(得分:0)
如果数组中的值为string
True
而不是boolean
true
,则可以使用此值,否则请使用array_product
,如另一个答案中所示。
$res = array_unique($your_array);
if (sizeof($res) === 1 && current($res) == 'True') {
return 'success';
}