//기존 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):
배열 ( [0] => 배열 ( [ID] => 1 ) [1] => 배열 ( [ID] => 12 ) [2] = > 배열( [ID] => 123 ) [3] => 배열( [ID] => 1234 ) [4] => 배열( [ID] => 12345 )
인쇄됨:
ID: 123 존재
배열( [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):
배열 ( [0] => 배열 ( [ID] => 1 ) [1] => 배열 ( [ID] => 12 ) [2] = > 배열( [ID] => 123 ) [3] => 배열( [ID] => 1234 ) [4] => 배열( [ID] => 12345 )
인쇄됨:
ID: 123 존재
배열( [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
의 형식이 잘못되었습니다. 또한, in_array
기능을 사용할 때 "이상한 동작"에 주의해야 합니다. 이 기능을 사용할 때 주의할 점은 in_array 매뉴얼을 참고하시기 바랍니다.
$set_old_id
의 형식이 올바르면 ID가 추출되어 [1,2,3,4]와 같은 1차원 배열로 구성됩니다. 그런 다음 in_array 함수를 사용할 때 여기서 세 번째 매개변수를 사용해야 합니다. 이는 엄격한 일치를 의미합니다(유형과 값이 정확히 동일해야 함). 예:
<code class="php">in_array($set_new_id[$i], $set_old_id, true)</code>
이렇게 하면 배열에 값이 존재하는지 정확하게 판별할 수 있습니다. 물론 isset()
등의 다른 방법을 사용할 수도 있습니다. PHP 매뉴얼에는 많은 경우가 있습니다.
저도 예전에 in_array()
을 사용하면서 속은 적이 있었는데, 여기에 "PHP의 "Some "traps"""이라고 기록해 두었습니다.