多阵列连接

时间:2014-09-19 01:45:07

标签: php arrays

我从多个表中调用信息,将结果作为模板中的变量提供给我。模板函数在这里并不是那么相关,但是获得数组和计数正确是我似乎正在努力解决的问题。如果有人可以请检查代码,我肯定错过了一些东西。

$ brandFieldArray tableFields包含tableB字段信息。例如,如果tableB有一个名为images的字段,则tableB中的字段将包含图像的路径,但tableFields将保存名称" image"在一个字段中,以及图像的字段类型,长度,宽度,质量,可见性等。

我可以轻松创建没有数组的字段,但系统可以创建需要添加到数组的字段,而无需每次都编辑代码。

所以我需要调用tableFields中的字段和tableB中的内容。 tableItems的$ result是为了确保我从tableB中获取tableItems中保存的正确项目的正确内容。

你能帮我解决一下这段代码吗?

<?php
     switch ($requiredVar) {
         case "brand":
             $brandFieldsArray = $dbA->query("select * from tableFields where type='X' and visible=1");
             $result = $dbA->query("select bID from tableItems where iID = $x");
             if ($dbA->count($result) != null) {
                 $thisrecord = $dbA->fetch($result);
                 $bID = $thisrecord["bID"];
             } 
             else {
                 $bID = null;
             }
             $theBrandsArray = $dbA->query("select * from tableB where bID=$bID");
             $bcCount = count($theBrandsArray);
             $brandContentArray = null;
             foreach ((array) $theBrandsArray as $brandContent) {
                  $allBrandFields = "";     
                  if (is_array($brandFieldsArray)) {
                      $cc = count($brandFieldsArray);
                      foreach ($brandFieldsArray as $brField) {
                         $thisBrandField = $brField;
                         switch ($thisBrandField["fieldtype"]) {
                              case "TEXT":
                              case "TEXTAREA":
                              case "IMAGE":
                                if ($thisBrandField["fieldtype"] == "IMAGE") {
                                    if ($brandContent["brandfield".$brField["fieldname"]] == "") {
                                         $thisBrandField["content"] = $brfield["defaultimage"];
                                    } 
                                    else {
                                         $thisBrandField["content"] = $brandContent["brandfield".$brField["fieldname"]];
                                     }
                                     $thisField = generateImageVariables($brField["x"],$brField["y"]);
                                     $thisBrandField["style"] = $thisField["style"];
                                     $thisBrandField["stylefull"] = $thisField["stylefull"];
                                 } 
                                 else {
                                     $brandContent["brandfield".$brField["fieldname"]] = findCorrectLanguage($brandContent,"brandfield".$brField["fieldname"]);
                                     if (retrieveOption("convertToBR") == 1 && retrieveOption("WYSIWYGEnabled") == 0) {
                                         $thisBrandField["content"] = str_replace("\r\n","<br/>",$brandContent["brandfield".$brField["fieldname"]]);
                                     } 
                                     else {
                                          $thisBrandField["content"] = $brandContent["brandfield".$brField["fieldname"]];
                                     }
                                }
                                break;
                             }
                             $brandContent[$brField["fieldname"]] = @$thisBrandField;
                       }
                       if (is_array($allBrandFields)) {
                           $brandContent["brandfields"] = $allBrandFields;
                       } 
                       else {
                           $brandContent["brandfields"] = null;
                       }
                  }
                  $brandContentArray[] = $brandContent;
             }
             return (count($brandContentArray) == 1 ? $brandContentArray[0] : $brandContentArray);
     }
     $tpl->addVariable("brand",$brandContentArray);
     break;
?>

2 个答案:

答案 0 :(得分:0)

我从未见过这个带有冒号的结构。也许你可以解释一下。或者它可能解决了这个问题。

         return $brandContentArray[0] : $brandContentArray;

删除此行。在休息之前,您不得从案件内部返回。您有以下命令行。

       // commented out: return $brandContentArray[0] : $brandContentArray;
 }
 $tpl->addVariable("brand",$brandContentArray);
 break;

您的描述缺少重要信息:必须在数组中返回哪些数据?

答案 1 :(得分:0)

在进一步研究使用表格设置结构的方式之后,我相信没有真正的方法使这项工作朝着我想要的方向发展。所以我决定只进行单独的调用并将多个数组从中删除。

谢谢大家的帮助。