$info['tupian'] 简单的数组使用时如果没用 分号 ‘’如$info[tupian] ,或者 $_session[name]就会报错,加了就正确了
请问 怎么设置一下,可以不用分号 而不报错? 不胜感激!!! <?php
  $sql=mysql_query("select * from tb_shangpin where tuijian=1 order by addtime desc limit 0,1");
  $info=mysql_fetch_array($sql);
  if($info==false){
   echo "本站暂无推荐商品!";
  }
  else{
  ?>
                            <table width="270"  border="0" cellspacing="0" cellpadding="0">
                              <tr>
                                <td width="130" rowspan="5"><div align="center">
                                    <?php
    if(trim($info['tupian']=="")){
  echo "暂无图片";
}
else{
  ?>

解决方案 »

  1.   

    你可以先定义常量试试define('tp','tupian');
    $info(tp);
      

  2.   

    “'”这个是引号...楼主的意思是$a['b']正确,$a[b]错误?
      

  3.   

    error_reporting(E_ALL ^ E_NOTICE);
      

  4.   

    你看一下这样可以不
    <?php 
      $sql=mysql_query("select * from tb_shangpin where tuijian=1 order by addtime desc limit 0,1"); 
      $info=mysql_fetch_object($sql); 
      if($info==false){ 
      echo "本站暂无推荐商品!"; 
      } 
      else{ 
      ?> 
                                <table width="270"  border="0" cellspacing="0" cellpadding="0"> 
                                  <tr> 
                                    <td width="130" rowspan="5"> <div align="center"> 
                                        <?php 
        if(trim($info->tupian=="")){ 
      echo "暂无图片"; 

    else{ 
      ?>
      

  5.   

    <?php$info = array( tupian=>'111', 'tu'=>'222' );echo $info[tupian];echo $info[tu];print_r( $info );?>定义数组的时候可以直接用!数据提取的话,你可以 print_r( $info[tupian] ); 看一下,应该是可以的吧 ..
      

  6.   


    · 作者:laruence(http://www.laruence.com/)
    · 本文地址: http://www.laruence.com/2009/04/24/695.html
    · 转载请注明出处 我看到过很多人操作数组的时候, 对于数组中的非数字键名不使用引号,$array[key] = $value;
    我可以理解有些人可能会觉得这样的代码很”整洁”, 并且也能正常执行.
    更甚至,如果他很”幸运的”php配置的好:error_reporting = ~E_NOTICE
    他也许永远都沉浸在自己的”整洁”风格中, 看不到任何的NOTICE提示, 也不会意识到, 他这么做, 能损失多少的性能~来, 我们一起来看看:good.php:
    <?php 
       $array = array();
       $i = 0;
       while(++$i < 1000){
           $array['good'] = 2;
       }
    ?>
     
    bad.php:
    <?php 
       $array = array();
       $i = 0;
       while(++$i < 1000){
           $array[good] = 2;
       }
    ?>
    分别看运行时间(多次平均时间):
    加引号的:$ time php -f good.phpreal    0m0.013s
    user    0m0.005s
    sys     0m0.007s
    不加引号的:$ time php -f bad.phpPHP Notice:  Use of undefined constant bad - assumed 'bad' in /home/huixinchen/tmp/bad.php on line 
    (此处省略999行NOTICE)
    real    0m0.100s
    user    0m0.020s
    sys     0m0.029s
    看看,差别有多大?
    哦, 或许我们应该模拟一下那些”幸运的”人们的情况, 去掉花费在记录NOTICE的开销, 看看~$ time php -f bad.phpreal    0m0.037s
    user    0m0.018s
    sys     0m0.018s
    我们可以看出, 基本上, 使用引号,和不使用引号的效率损失在3倍以上那么, 这些效率损失到哪里去了呢?我们分别看下, 俩个文件生成的OPCODE序列:good.php :filename:       /home/huixinchen/tmp/good.php
    compiled vars:  !0 = $array, !1 = $i
    line     #  op                           fetch          ext  return  operands
    -------------------------------------------------------------------------------
       2     0  INIT_ARRAY                                       ~0
             1  ASSIGN                                                   !0, ~0
       3     2  ASSIGN                                                   !1, 0
       4     3  PRE_INC                                          $3      !1
             4  IS_SMALLER                                       ~4      $3, 1000
             5  JMPZ                                                     ~4, ->9
       5     6  ZEND_ASSIGN_DIM                                          !0, 'good'
             7  ZEND_OP_DATA                                             2, $6
       6     8  JMP                                                      ->3
       8     9  RETURN                                                   1
            10* ZEND_HANDLE_EXCEPTION
    bad.php :filename:       /home/huixinchen/tmp/bad.php
    compiled vars:  !0 = $array, !1 = $i
    line     #  op                           fetch          ext  return  operands
    -------------------------------------------------------------------------------
       2     0  INIT_ARRAY                                       ~0
             1  ASSIGN                                                   !0, ~0
       3     2  ASSIGN                                                   !1, 0
       4     3  PRE_INC                                          $3      !1
             4  IS_SMALLER                                       ~4      $3, 1000
             5  JMPZ                                                     ~4, ->10
       5     6  FETCH_CONSTANT                                   ~5      'bad'
             7  ZEND_ASSIGN_DIM                                          !0, ~5
             8  ZEND_OP_DATA                                             2, $7
       6     9  JMP                                                      ->3
       8    10  RETURN                                                   1
            11* ZEND_HANDLE_EXCEPTION
    我们可以看出(其实,根据NOTICE的提示也知道), PHP会把没有引号引起来的键名当作是常量去获取, 当找不到的时候, 抛出一个NOTICE, 然后再根据”常量明”生成一个字符串, 然后再讲这个字符串做为键名继续~聪明的你一定会想到, 可能会出现如下不可预期的错误:define('key_name' , 'laruence');
    ....
    //省略很多行代码
    $array[key_name] = 2; //变成了 $array['laruence'] = 2;
    //这样的错误, 你会很郁闷吧?
    明白了么? 数组中的非数字键的键名一定要有引号啊~
    哦, 还记得有人会说, 那在字符串变量替换的时候, 写引号会导致错误,
    恩, 标准写法:$string = "variable value is {$array['key']}"
    我很赞同:”be lazy”, 但是, lazy也是应该有原则的.最后, 好的代码,不应该通过关闭error_reporting来伪装.
      

  7.   


    LZ 用错了。要这样if( trim( $info['tupian'] )== "" )
      

  8.   

    自从装了php apache mysql 就从来没有进行过什么配置
    不过数组里面也不用加引号,没错过
      

  9.   

    可以不加引号的,不过在php加引号的速度要快一些
      

  10.   

    <?php 
    function microtime_float()
    {
        list($usec, $sec) = explode(" ", microtime());
        return ((float)$usec + (float)$sec);
    }$time_start = microtime_float();
    $info = array( tupian=>'111', 'tu'=>'222' );echo $info['tupian']."<br>";echo $info['tu']."<br>";
    $time_end = microtime_float();
    $time = $time_end - $time_start;echo "$time seconds\n";?> 
    用这个小例子,自己跑一下看看,多刷新几次,之后再把引号去掉,再跑一下,时间差了很多,虽然对于目前这个例子来说没有什么区别.但总归还是用快的不用慢的.
      

  11.   

    1、前面加上@
    2、修改php.ini 屏蔽报错信息。
      

  12.   


    我下载了一个 源代码 里面 都没加引号 ‘’,结果提示错误 undefined ......
    所以修改起来比较麻烦自己以前的 php 没加 ‘’ 也是正确的
    后面装的php一键安装包 就可以报错了,所以请教高手们 什么原因
    怎么解决 谢谢了 回答都送分!呵呵