Php 在数组中找不到存在的值?
下面是检查联系人id是否存在于特定用户池的池中的代码Php 在数组中找不到存在的值?,php,arrays,pdo,Php,Arrays,Pdo,下面是检查联系人id是否存在于特定用户池的池中的代码 function checkid() { $conn = connectPDO(); $query = "SELECT contact_id FROM contacts WHERE contact_by = :cby"; $st = $conn->prepare( $query ); $st->bindValue( ':cby', $this->contact_by, PDO::PARAM_
function checkid()
{
$conn = connectPDO();
$query = "SELECT contact_id FROM contacts WHERE contact_by = :cby";
$st = $conn->prepare( $query );
$st->bindValue( ':cby', $this->contact_by, PDO::PARAM_INT );
$st->execute();
$row = $st->fetchALL();
$conn = null;
print_r($this->contact_id); //1
print_r($row); //Array ( [0] => Array ( [contact_id] => 1 [0] => 1 ) [1] => Array ( [contact_id] => 3 [0] => 3 ) )
if( !in_array( $this->contact_id, $row ))
{
echo 'You are not authorised to update the details of this contact';
}
}
以下是网址:
http://localhost/contmanager/home.php?action=update&contactid=1
我注意到的一点是,当我使用fetch而不是fetchall时,它对联系人id“1”工作正常,但在使用fetchall时失败。
在\u数组中
不适用于多维数组,解决方法是:
foreach( $row as $each ){ #collect all the ids in an array
$temp[] = $each['contact_id'];
}
然后检查_数组中的:
if( !in_array( $this->contact_id, $temp )){
//your code here
}
将此函数用于多维数组的:
function in_multiarray($elem, $array)
{
$top = sizeof($array) - 1;
$bottom = 0;
while($bottom <= $top)
{
if($array[$bottom] == $elem)
return true;
else
if(is_array($array[$bottom]))
if(in_multiarray($elem, ($array[$bottom])))
return true;
$bottom++;
}
return false;
}
对不起,这个问题很容易用“RTFM”来回答。因此,就目前而言,它没有显示任何研究成果-为什么要付出?有什么问题吗?是的,成功了,谢谢你的快速回复。可悲的是,我得到了3张反对票,但我学到了一个新东西。
$array = array( array( 'contact_id' => '1' , 1 ) , array( 'contact_id' => '3' , 3 ) );
var_dump( in_multiarray( 1 , $array ) );