douguang9014 2017-02-24 05:55
浏览 41
已采纳

PHP PDO通过in_array()方法比较数组元素是行不通的

I need to compare element from an array to another array with in_array() method:

$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()
}

Now i want to compare the above array elements with each element in the iterated loop over the following loop

<?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()
    }
?>

in fact it populate the following array:

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 ) 
)

but i have no luck to compare, because the array contained with another array and i don't know what to do with this now ?

  • 写回答

1条回答 默认 最新

  • doukuanyong1939 2017-02-24 07:45
    关注

    You need to loop through the parent array to compare to the inner arrays.

    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
        }
    }
    

    This way you'll be able to check wether whatever you're looking for is inside one of the results you got from the database

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 three.js添加后处理以后模型锯齿化严重