Heim > Artikel > Backend-Entwicklung > Verfolgt! PHP-String-Array-Schnittpunkt
<code>$where = '1=1'; $keyword = $_GET['keyword']; if($keyword) { $where['title'] = array('like', "%$keyword%"); } var_dump($where); 竟然打印出来:A=1 到底是怎么样的转换流程?</code>
<code>$where = '1=1'; $keyword = $_GET['keyword']; if($keyword) { $where['title'] = array('like', "%$keyword%"); } var_dump($where); 竟然打印出来:A=1 到底是怎么样的转换流程?</code>
Lass mich zunächst einmal klagen (wenn du dich nicht beschwerst, wirst du sterben!):
$where
ist eine Zeichenfolge. Was zum Teufel ist das $where['title']
, das du geschrieben hast?
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>
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>
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>
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>
Dann ist es hier leicht zu verstehen, $where[0] = array();
dem ersten Zeichen der Zeichenfolge Array
zuzuordnen. $where
Bingo, die Ausgabe ist string(3) "A=1"
Spukcode schreiben:
<code>$where = 'A=1'; $keyword = $_GET['keyword']; if($keyword) { $where['title'] = $keyword == 123; } var_dump($where);</code>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.