Heim  >  Artikel  >  Backend-Entwicklung  >  in_array()

in_array()

WBOY
WBOYOriginal
2016-08-10 09:07:261146Durchsuche

//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

Antwortinhalt:

//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.

.“
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn