Heim > Backend-Entwicklung > PHP-Tutorial > Verfolgt! PHP-String-Array-Schnittpunkt

Verfolgt! PHP-String-Array-Schnittpunkt

WBOY
Freigeben: 2016-08-04 09:20:08
Original
1095 Leute haben es durchsucht

<code>$where = '1=1';
$keyword = $_GET['keyword'];
        
if($keyword) {
    $where['title'] = array('like', "%$keyword%");
}

var_dump($where);

竟然打印出来:A=1

到底是怎么样的转换流程?</code>
Nach dem Login kopieren
Nach dem Login kopieren

Antwortinhalt:

<code>$where = '1=1';
$keyword = $_GET['keyword'];
        
if($keyword) {
    $where['title'] = array('like', "%$keyword%");
}

var_dump($where);

竟然打印出来:A=1

到底是怎么样的转换流程?</code>
Nach dem Login kopieren
Nach dem Login kopieren

Lass mich zunächst einmal klagen (wenn du dich nicht beschwerst, wirst du sterben!):

  1. $where ist eine Zeichenfolge. Was zum Teufel ist das $where['title'], das du geschrieben hast?

  2. Sie weisen einer Zeichenfolge innerhalb einer Zeichenfolge ein array zu. Was zum Teufel ist das?

Nachdem ich einige verschiedene und nutzlose Codes aus Ihrer Frage entfernt habe, habe ich die Frage vereinfacht:

<code>$where = '1=1';
$where['title'] = array();
var_dump($where);</code>
Nach dem Login kopieren

Entspricht der obigen Beschwerde, schauen wir uns dies Schritt für Schritt an:
$where['title'] drückt die Zeichen mit dem Index $where in der Zeichenfolge 'title' aus. Beachten Sie, dass der zulässige Wert des Index [ ist. 0 -Stringlänge minus 1], dann hat PHP tatsächlich den gleichen Effekt wie $where[0] für illegale Indizes.
Dieses Problem wird weiter vereinfacht zu:

<code>$where = '1=1';
$where[0] = array();
var_dump($where);</code>
Nach dem Login kopieren

Verstanden, dass sich $where[0] tatsächlich auf das erste Zeichen der $where-Zeichenfolge bezieht, daher möchte ich mich über Folgendes beschweren: „Sie weisen einer Zeichenfolge in einer Zeichenfolge ein array zu, was Zum Teufel ist das so? "
Machen wir einen Test:

<code>var_dump( (string)array() );</code>
Nach dem Login kopieren

Was wird Ihrer Meinung nach ausgegeben?

<code>PHP Notice:  Array to string conversion in /home/nfer/temp.php on line 8
string(5) "Array"</code>
Nach dem Login kopieren

Dann ist es hier leicht zu verstehen, $where[0] = array(); dem ersten Zeichen der Zeichenfolge Array zuzuordnen. $whereBingo, die Ausgabe ist
string(3) "A=1"

Lassen Sie mich zum Schluss noch einen

Spukcode schreiben:

<code>$where = 'A=1';
$keyword = $_GET['keyword'];
        
if($keyword) {
    $where['title'] = $keyword == 123;
}

var_dump($where);</code>
Nach dem Login kopieren
Was wird Ihrer Meinung nach das Ergebnis sein?

1.$wo = 1, das ist richtig, erstens ist dies eine Zeichenfolge.

2. Dann behandeln Sie $where als Array und weisen $where['title'] = array('like',"xxx") zu.

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage