0

I'm having problems with this code below. I would like someone tell me why the echo $menu; is bringing the unexpected 0 (zero) as result? $t is with data, below i took a var_dump to show you...

<div class="cont_menu">
  <div class="menu">
    <ul>
      <?php
      include_once 'banco_pdo.php';

      $sql = 'SELECT colaborador_menu_cod,colaborador_menu_sup_cod,menu_descr,menu_nivel,menu_titulo,menu_url   FROM colaborador_menu WHERE colaborador_menu_cod in (SELECT colaborador_menu_cod as id FROM menu_por_colaborador WHERE col_cod = :col_cod)';
      $colaborador = $_SESSION["colaborador"];
      try {
          $core = Core::getInstance();
          $stmt = $core->dbh->prepare($sql);
          $stmt->bindParam('col_cod',$colaborador, PDO::PARAM_INT);
          $stmt->execute();
          $t = $stmt->fetchALL(PDO::FETCH_ASSOC);
      } catch (PDOException $e) {
          echo $e->getMessage();
      }
      unset($sql);unset($core);unset($stmt);unset($colaborador);

      if(!empty($t))
      {
          foreach($t as $linha)
          {
              if($linha['menu_nivel'] == 1)
              { $principal[] = $linha; }
              else
              { $subcat[] = $linha; }
          }
          $menu = '';

          foreach($principal as $linha2)
          {
              $menu = $menu + "<li><a class=\"hide\" title=\"".$linha2["menu_titulo"]."\" href=\"#\" style=\"font-weight:bold;\">".$linha2["menu_descr"]."</a><!--[if lte IE 6]><a href=\"#\">".$linha2["menu_descr"]."<table><tr><td><![endif]--><ul>";
              foreach($subcat as $linha3)
              { 
                  if($linha3["colaborador_menu_sup_cod"] == $linha2["colaborador_menu_cod"])
                  {
                      $menu = $menu + "<li><a href=\"".$linha3["menu_url"]."\" title=\"".$linha3["menu_titulo"]."\">".$linha3["menu_descr"]."</a></li>";
                  }
          }
          $menu = $menu + '</ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></li>';
      }
      echo $menu;
  }
  ?>
  </ul>
</div>

This is the var_dump of the $t variable:

array
  0 => 
    array
      'colaborador_menu_cod' => string '1' (length=1)
      'colaborador_menu_sup_cod' => null
      'menu_descr' => string 'CATALOGO' (length=8)
      'menu_nivel' => string '1' (length=1)
      'menu_titulo' => string '#' (length=1)
      'menu_url' => string 'CATALOGO' (length=8)
  1 => 
    array
      'colaborador_menu_cod' => string '2' (length=1)
      'colaborador_menu_sup_cod' => string '1' (length=1)
      'menu_descr' => string 'CATEG. E PROD.' (length=14)
      'menu_nivel' => string '2' (length=1)
      'menu_titulo' => string 'Categoria e Produtos' (length=20)
      'menu_url' => string 'udi_categoria.php?listar=cat_nivel&par=1&op=insert&nivel=1' (length=58)
  2 => 
    array
      'colaborador_menu_cod' => string '3' (length=1)
      'colaborador_menu_sup_cod' => string '1' (length=1)
      'menu_descr' => string 'PROD. S/ CAT.' (length=13)
      'menu_nivel' => string '2' (length=1)
      'menu_titulo' => string 'Produtos sem Categoria' (length=22)
      'menu_url' => string 'prod_sem_cat.php' (length=16)
  3 => 
    array
      'colaborador_menu_cod' => string '4' (length=1)
      'colaborador_menu_sup_cod' => string '1' (length=1)
      'menu_descr' => string 'CARACTERISTICA' (length=14)
      'menu_nivel' => string '2' (length=1)
      'menu_titulo' => string 'Caracteristica de Produtos' (length=26)
      'menu_url' => string 'udi_caracteristica.php?op=insert' (length=32)
  4 => 
    array
      'colaborador_menu_cod' => string '5' (length=1)
      'colaborador_menu_sup_cod' => string '1' (length=1)
      'menu_descr' => string 'MENU' (length=4)
      'menu_nivel' => string '2' (length=1)
      'menu_titulo' => string 'Menus' (length=5)
      'menu_url' => string 'udi_menu.php?listar=menu_nivel&par=1&op=insert&menu_nivel=1' (length=59)
  5 => 
    array
      'colaborador_menu_cod' => string '6' (length=1)
      'colaborador_menu_sup_cod' => string '1' (length=1)
      'menu_descr' => string 'USUARIOS' (length=8)
      'menu_nivel' => string '2' (length=1)
      'menu_titulo' => string 'usuarios' (length=8)
      'menu_url' => string 'udi_usuario.php?op=insert' (length=25)
0

1 Answer 1

5

PHP uses the . operator for string concatenation, not +. You have some code like this:

$menu = $menu + "...some text...";

Use this instead:

$menu = $menu . "...some text...";

Or even:

$menu .= "...some text...";

+ tries to add two numbers. If either of the strings cannot be converted to numbers, zero is assumed. The sum of zero and zero is zero, so $menu is zero if you use +.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.