Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Pdo - Fatal编程技术网

Php 在数组中找不到存在的值?

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_

下面是检查联系人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_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  ) );