【问题标题】:PHP PDO comparison of array element by in_array() method is not working通过 in_array() 方法对数组元素的 PHP PDO 比较不起作用
【发布时间】:2017-02-24 05:55:50
【问题描述】:

我需要使用 in_array() 方法将数组中的元素与另一个数组进行比较:

$oldAttachedObjs = array();//this array need to be compare with single element of other loop     

$sqlObjAttached = "SELECT sno,ins_sno,obj_sno FROM cases_objections WHERE ins_sno = :ins_sno";
$paramObj = array(':ins_sno'=>$ins_sno);

if($db->dbQuery($sqlObjAttached,$paramObj)){
    foreach($db->getRecordSet($sqlObjAttached,$paramObj) as $o){
        $oldAttachedObjs[] = $o;
    }//foreach()
}

现在我想将上述数组元素与以下循环中的迭代循环中的每个元素进行比较

<?php 
    $sqlChildren = "SELECT sno,obj_sno,child_lbl FROM list_objection_children WHERE is_active = 1 AND obj_sno = :obj_sno ORDER BY sno ASC";                                    
    $param = array(':obj_sno'=>$obj['sno']);                               

    if($db->dbQuery($sqlChildren,$param)){
        foreach($db->getRecordSet($sqlChildren,$param) as $ch){
?>

<ul class="obj_ul">
    <li>
         <div class="checkbox checkbox-primary">
         <?php print_r($oldAttachedObjs[0]); ?>
             <input type="checkbox" <?php if(in_array($ch['sno'],$oldAttachedObjs['obj_sno'])){ ?> checked <?php //} ?> value="1" id="chk_<?php echo($ch['sno']);?>" name="chk_<?php echo($ch['sno']);?>" class="styled">
             <label style="font-weight: normal !important;" for="chk_<?php echo($ch['sno']);?>"><?php echo($ch['child_lbl']); ?></label>
         </div>
    </li>
</ul>

<?php
        }//foreach()
    }
?>

实际上它填充了以下数组:

Array ( 
    [0] => Array ( [sno] => 1 [0] => 1 [ins_sno] => 2 [1] => 2 [obj_sno] => 3 [2] => 3 ),
    [1] => Array ( [sno] => 2 [0] => 2 [ins_sno] => 2 [1] => 2 [obj_sno] => 49 [2] => 49 ), 
    [2] => Array ( [sno] => 3 [0] => 3 [ins_sno] => 2 [1] => 2 [obj_sno] => 52 [2] => 52 ),
    [3] => Array ( [sno] => 5 [0] => 5 [ins_sno] => 2 [1] => 2 [obj_sno] => 54 [2] => 54 ) 
)

但我没有运气比较,因为该数组包含另一个数组,我现在不知道该怎么办?

【问题讨论】:

  • 上面的数组是$ch ?
  • 还是上面的数组$oldAttachedObjs?
  • $oldAttachedObjs 就是上面的数组..

标签: php mysql arrays compare


【解决方案1】:

您需要遍历父数组以与内部数组进行比较。

foreach($oldAttachedObjs as $objs){
    if(in_array('what you are looking for', $objs){
        //it is in the array, do what you want
    }else{
        //it is not in the array, deal with it accordingly
    }
}

这样您就可以检查您要查找的内容是否在您从数据库获得的结果之一中

【讨论】:

  • 很高兴!祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多