Heim > Artikel > Backend-Entwicklung > in_array()
//Vergleichen Sie den vorhandenen ID-Satz $set['old_id'] mit dem ID-Satz $set['new_id'], der von der Rezeption gesendet wurde,
<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>
Die Werte, die ich übergeben habe:
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 )
Gedruckt:
ID: 123 existiert
Array ( [0] => 123 [1] => 1233 )
Frage: Warum hat print_r($checkout); immer noch 123?
Ich habe offensichtlich gescreent.
Ich hoffe, Gott wird es mir sagen. . Vielen Dank
//Vergleichen Sie den vorhandenen ID-Satz $set['old_id'] mit dem ID-Satz $set['new_id'], der von der Rezeption gesendet wurde,
<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>
Die Werte, die ich übergeben habe:
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 )
Gedruckt:
ID: 123 existiert
Array ( [0] => 123 [1] => 1233 )
Frage: Warum hat print_r($checkout); immer noch 123?
Ich habe offensichtlich gescreent.
Ich hoffe, Gott wird es mir sagen. . Vielen Dank
<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>
Dies ist ein Beispiel für die korrekte Verwendung von in_array. Denken Sie selbst über Ihr spezifisches Problem nach. Sie können anhand des Codes nicht erkennen, wie $set['old_id'] aussieht.
Zuallererst ist das Format von $set_old_id
falsch. Außerdem müssen Sie bei der Verwendung der Funktion in_array
auf einige ihrer „seltsamen Verhaltensweisen“ achten. Es gibt viele Beispiele im Handbuch, die zeigen, was Beachten Sie bei der Verwendung dieser Funktion bitte das Handbuch in_array.
Wenn $set_old_id
das richtige Format hat, wird die ID extrahiert und in ein eindimensionales Array umgewandelt, z. B.: [1,2,3,4]. Wenn Sie dann die Funktion in_array verwenden, müssen Sie hier den dritten Parameter verwenden, was eine strikte Übereinstimmung bedeutet (Typ und Wert müssen genau gleich sein). Zum Beispiel:
<code class="php">in_array($set_new_id[$i], $set_old_id, true)</code>
Auf diese Weise können Sie genau feststellen, ob ein Wert in einem Array vorhanden ist. Natürlich können Sie auch andere Methoden verwenden, wie z. B. isset()
usw. Im PHP-Handbuch gibt es viele Fälle.
Ich wurde in der Vergangenheit auch bei der Verwendung von in_array()
ausgetrickst und habe es hier aufgezeichnet: „Einige „Fallen“ in PHP.