in_array()

WBOY
發布: 2016-08-10 09:07:26
原創
1109 人瀏覽過

//現有的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 < count($set_new_id); $i++) { 

            if(in_array($set_new_id[$i], $set_old_id)){
                //当前数据库中有的
                echo "ID: ".$set_new_id[$i]." 存在<br>";

                $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 < count($set_new_id); $i++) { 

            if(in_array($set_new_id[$i], $set_old_id)){
                //当前数据库中有的
                echo "ID: ".$set_new_id[$i]." 存在<br>";

                $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 < $j; $i ++) {
    if (in_array($$a[$i], $b)) {
        //then...
    } else {
        //then...
    }
}</code>
登入後複製

這個是正確使用in_array的例子,你那個的具體問題自己思考一下吧。看程式碼也看不出$set['old_id']具體長什麼樣子。

首先$set_old_id 格式是不對的,另外在使用$set_old_id 格式是不對的,另外在使用

in_array

函數時需要注意它的一些“怪異行為”,手冊中有很多例子展示了該函數在使用時需要注意的地方,不凡參考一下手冊in_array。 如果

$set_old_id

格式正確的話,也就是把 ID 提取出來,形成一個一維數組,如:[1,2,3,4]。那麼在使用 in_array 函數時,這裡需要使用上第三個參數,它意味著進行嚴格匹配(類型及值都需要完全一樣)。如: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;code class=&quot;php&quot;&gt;in_array($set_new_id[$i], $set_old_id, true)&lt;/code&gt;</pre><div class="contentsignin">登入後複製</div></div> 這樣子才能準確判斷一個值是否存在一個陣列裡,當然也可以用其他方法,例如

isset()

等等,PHP手冊有許多案例。 以前自己在使用

in_array()🎜 過程中也中過招,記錄在這裡“PHP 中的一些 “陷阱”。🎜
相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!