Php 正在努力理解这个特定代码是如何工作的。
我面临着一段对我来说毫无意义的代码。我正在一个使用PHP和Smarty模板的网站上工作,但是有一行关于数组的代码我不理解它是如何工作的Php 正在努力理解这个特定代码是如何工作的。,php,smarty,Php,Smarty,我面临着一段对我来说毫无意义的代码。我正在一个使用PHP和Smarty模板的网站上工作,但是有一行关于数组的代码我不理解它是如何工作的 $SLang = &SLanguage::getInstance(); $q="SELECT * FROM texte where text_lang='{$SLang->lang}' ORDER BY text_id"; $texte = _sqlFetchQuery($q); foreach($text
$SLang = &SLanguage::getInstance();
$q="SELECT * FROM texte where text_lang='{$SLang->lang}' ORDER BY text_id";
$texte = _sqlFetchQuery($q);
foreach($texte as $text)
{
$texteList[$text['text_alias']]['text'] = $text['text_text'];
if($text["text_category"]==3){
$philosophyList[] = $text["text_text"];
$philosophyListSeo[] = $text["text_alias"];
}
}
$philosophyList上的“var_dump”的输出只从数据库中取出“text_text”列,现在我确实理解了它是如何到达该列的结构。有人能解释一下吗?这一行代码是如何工作的<代码>$texteList[$text['text\u alias']['text']=$text['text\u text']代码>它被称为锯齿阵列 这是这个的简写:
$texteList[$text['text_alias']] = array('text'=>$text['text_text']);
因此,它使用$text['text_alias']显示的任何文本创建一个命名数组,并将一个带有命名“text”元素的数组赋值为其值
但这与$philosophyList[]
无关。要了解$philosophyList[]
是如何工作的,您需要了解foreach是如何工作的;基本上,它接受数组中的每个项(在本例中为$texte
),并将该数组项的值分配给一个变量(在本例中为$text
)。这只是执行for循环的一种更简单的方法。他们本可以轻松做到:
$philosophyList[] = $texte[$i]["text_text"];
$texteList是一个多维“关联”数组。但它的赋值对分配给$philosphyList的内容没有影响。我不希望$philosophyList的转储是字面上的“text\u text”,而是$text的内容是“key”“text\u text”。此外,我不会依赖SELECT*。如果您只需要text\u text、text\u alias和text\u id字段,请显式选择它们。谢谢Richard。现在它更有意义了。