首页 > 后端开发 > php教程 > in_array()

in_array()

WBOY
发布: 2016-08-10 09:07:26
原创
1167 人浏览过

//现有的ID集合$set['old_id']与前台传来的id集合$set['new_id']作对比,

<code>public function contrast_new_old_id(){
    //从前台传来的id组
    $checkids['id']=$this->input->post('id');

    //根据逗号将$checkids['id']拆解,并形成新ID集合$set_new_id
    $set_new_id=explode(',', $checkids['id']);

    //从数据库中取得的现有的ID的集合$set_old_id
    $set_old_id=$this->m_checkout->acquire_old_id();    
    //print_r($set_old_id);
    //将$set_new_id 中的id一个个拿出来,在$set_old_id 中作对比。将在$set_old_id 中没有的ID存入数据库
    
        for ($i=0; $i ";

                $this->load->view('checkout/v_test');

            }else{
                //将当前数据库中没有的写进数组$checkout[]
                $checkout[$i]=$set_new_id[$i];    

            }
        }
    print_r($checkout);
    
    //$this->m_checkout->add_new_id($checkout);
}</code>
登录后复制
登录后复制

我传入的值:
123,1233

print_r($set_old_id):
Array ( [0] => Array ( [ID] => 1 ) [1] => Array ( [ID] => 12 ) [2] => Array ( [ID] => 123 ) [3] => Array ( [ID] => 1234 ) [4] => Array ( [ID] => 12345 ) )

打印出来的:
ID: 123 存在
Array ( [0] => 123 [1] => 1233 )

问题:为什么print_r($checkout);还会有123
我明明进行了筛选。
望大神告知。。谢谢

回复内容:

//现有的ID集合$set['old_id']与前台传来的id集合$set['new_id']作对比,

<code>public function contrast_new_old_id(){
    //从前台传来的id组
    $checkids['id']=$this->input->post('id');

    //根据逗号将$checkids['id']拆解,并形成新ID集合$set_new_id
    $set_new_id=explode(',', $checkids['id']);

    //从数据库中取得的现有的ID的集合$set_old_id
    $set_old_id=$this->m_checkout->acquire_old_id();    
    //print_r($set_old_id);
    //将$set_new_id 中的id一个个拿出来,在$set_old_id 中作对比。将在$set_old_id 中没有的ID存入数据库
    
        for ($i=0; $i ";

                $this->load->view('checkout/v_test');

            }else{
                //将当前数据库中没有的写进数组$checkout[]
                $checkout[$i]=$set_new_id[$i];    

            }
        }
    print_r($checkout);
    
    //$this->m_checkout->add_new_id($checkout);
}</code>
登录后复制
登录后复制

我传入的值:
123,1233

print_r($set_old_id):
Array ( [0] => Array ( [ID] => 1 ) [1] => Array ( [ID] => 12 ) [2] => Array ( [ID] => 123 ) [3] => Array ( [ID] => 1234 ) [4] => Array ( [ID] => 12345 ) )

打印出来的:
ID: 123 存在
Array ( [0] => 123 [1] => 1233 )

问题:为什么print_r($checkout);还会有123
我明明进行了筛选。
望大神告知。。谢谢

<code>$a = [1,2,3];
$b = [1,4,5];
for($i = 0, $l = count($a); $i </code>
登录后复制

这个是正确使用in_array的例子,你那个的具体问题自己思考一下吧。看代码也看不出$set['old_id']具体长什么样。

首先 $set_old_id 格式是不对的,另外在使用 in_array 函数时需要注意它的一些“怪异行为”,手册中有很多例子展示了该函数在使用时需要注意的地方,不凡参考一下手册 in_array。

如果 $set_old_id 格式正确的话,也就是把 ID 提取出来,形成一个一维数组,如:[1,2,3,4]。那么在使用 in_array 函数时,这里需要使用上第三个参数,它意味着进行严格匹配(类型及值都需要完全一样)。如:

<code class="php">in_array($set_new_id[$i], $set_old_id, true)</code>
登录后复制

这样子才能准确判断一个值是否存在一个数组里,当然也可以用其他方法,比如 isset() 等等,PHP手册有许多案例。

以前自己在使用 in_array() 过程中也中过招,记录在这里“PHP 中的一些 “陷阱”。

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板