Zum Beispiel habe ich jetzt die Variable $arr, die ein Array ist
<code>$arr = [ 'news' => [ 'data' => [ 0 => [ 'title' => '名字', 'content' => '内容' ], ], ], ]; </code>
Einige Frameworks oder Template-Engines verfügen über Analysefunktionen. Der Wert von arr.news.data[0].title
kann über title
abgerufen und geändert werden.
Dann möchte ich wissen, was sein Prinzip ist und wie man diesen Ausdruck effizient, sicher und einfach verwendet, um 获取
und 设置
für die Werte im Array auszuführen?
Ich kann mir vorstellen, Textverarbeitung zu verwenden, aber diese sollte nicht sehr sicher und effizient sein. Bitten Sie den Lehrer um Rat.
Zum Beispiel habe ich jetzt die Variable $arr, die ein Array ist
<code>$arr = [ 'news' => [ 'data' => [ 0 => [ 'title' => '名字', 'content' => '内容' ], ], ], ]; </code>
Einige Frameworks oder Template-Engines verfügen über Analysefunktionen. Der Wert von arr.news.data[0].title
kann über title
abgerufen und geändert werden.
Dann möchte ich wissen, was sein Prinzip ist und wie man diesen Ausdruck effizient, sicher und einfach verwendet, um 获取
und 设置
für die Werte im Array auszuführen?
Ich kann mir vorstellen, Textverarbeitung zu verwenden, aber diese sollte nicht sehr sicher und effizient sein. Bitten Sie den Lehrer um Rat.
Die meisten Template-Engines werden vorkompiliert verarbeitet, das heißt, die eingegebenen Template-Daten werden in Standard-PHP-Anweisungen wie Variablen, Schleifen, Bedingungen und andere Symbole konvertiert und dann ausgeführt.
Außerdem sind diese Frameworks oder Template-Engines alle Open Source. Wenn Sie die Zeit haben, die Leute hier zu fragen, werden Sie es bereits verstehen, wenn Sie sich den Code selbst ansehen.
Lass mich einen Code für dich finden.
<code> public static function getValue($array, $key, $default = null) { if ($key instanceof \Closure) { return $key($array, $default); } if (is_array($key)) { $lastKey = array_pop($key); foreach ($key as $keyPart) { $array = static::getValue($array, $keyPart); } $key = $lastKey; } if (is_array($array) && (isset($array[$key]) || array_key_exists($key, $array)) ) { return $array[$key]; } if (($pos = strrpos($key, '.')) !== false) { $array = static::getValue($array, substr($key, 0, $pos), $default); $key = substr($key, $pos + 1); } if (is_object($array)) { // this is expected to fail if the property does not exist, or __get() is not implemented // it is not reliably possible to check whether a property is accessable beforehand return $array->$key; } elseif (is_array($array)) { return (isset($array[$key]) || array_key_exists($key, $array)) ? $array[$key] : $default; } else { return $default; } }</code>