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