【问题标题】:Cleaner way to echo multi dimension array回显多维数组的更简洁方法
【发布时间】:2013-07-26 19:31:41
【问题描述】:
echo "{$line['text_1']}";

上面的回声工作正常,但是当涉及到二维数组时,在我的崇高中,只有 {$line['text_2']} 这部分工作正常。 sublime 和浏览器都输出错误

echo "$array_2d[{$line['text_1']}][{$line['text_2']}]";

有什么想法吗?


更新

echo "$array_2d[$line['text_1']][$line['text_2']]";

使用 xampp,错误解析错误:语法错误,C:\xampp\htdocs 中出现意外 '[',期望 ']'

我只是从 mysql_fetch_assoc 中输出一个值。我可以通过 echo '' 以另一种方式做到这一点,但是我试图让我的代码更容易用于将来的编辑和代码复制粘贴

是的,我正在做类似的事情

echo "The price is $array_2d[$line['text_1']][$line['text_2']]"

在双引号中有很多 html 代码。

【问题讨论】:

  • 我要回显多行,用于 html + javascript 代码。 print_r 支持多字符串吗?
  • echo "$array_2d[$line['text_1']][$line['text_2']]"; 应该可以工作,为什么需要 {}?
  • 不打印整个数组,只想要mysql的特定结果
  • echo "$array_2d[$line['text_1']][$line['text_2']]";那将是一个错误
  • 只做 echo $array_2d[$line['text_1']][$line['text_2']];

标签: php echo


【解决方案1】:

为什么要输出数组?

如果是为了调试,你可以使用原生的php函数print_r()var_dump()

【讨论】:

    【解决方案2】:

    你应该会说

    echo "item is {$array_2d[$line['text1']][$line['text2']]}";
    

    到达子元素。

    当然,只有当它不是字符串中唯一的东西时,它才真正有用。如果您只回显一个值,则不需要引号,事情会变得更简单。

    echo $array_2d[$line['text1']][$line['text2']];
    

    【讨论】:

    • 哦,这行得通,我不敢相信!我的崇高将这种语法突出显示为错误方法,网络浏览器能够解析
    【解决方案3】:

    这应该有效:

    echo $array_2d[$line['text_1']][$line['text_2']];
    

    【讨论】:

      【解决方案4】:

      回显变量时,不必使用引号:

      echo $array_2d[$line['text_1']][$line['text_2']];
      

      如果你确实需要用那个字符串输出一些东西,连接运算符可以帮助你:

      echo "Array: " . echo $array_2d[$line['text_1']][$line['text_2']];
      

      【讨论】:

        【解决方案5】:

        您可以使用print_r() 来回显数组。

        例如:

        print_r($array);
        

        输出将是:

        Array ( [test] => 1 [test2] => 2 [multi] => Array ( [multi] => 1 [multi2] => 2 ) )

        您还可以使用它使其在 HTML 上下文中更具可读性:

        echo '<pre>';
        print_r($array);
        echo '</pre>';
        

        输出将是:

        Array
        (
           [test] => 1
           [test2] => 2
           [multi] => Array
                (
                    [multi] => 1
                    [multi2] => 2
                )
        
         )
        

        【讨论】:

        • 我在一个新项目上做的第一件事就是定义preprint() 来做这个:)
        • 我也总是让它变得更聪明——处理数组、对象、字符串等——所以我可以只调用函数而不关心正在打印的内容。节省打字:)
        【解决方案6】:

        您可以使用print_r()var_dump() 来回显数组。

        print_r() 以人类可读的方式显示有关变量的信息,而 var_dump() 函数显示有关变量/表达式的结构化信息,包括其类型和值。

        $array = 'YOUR ARRAY';
        echo "<pre>";
        print_r($array);
        echo "</pre>";
        

        $array = 'YOUR ARRAY';
        var_dump($array);
        

        【讨论】:

          【解决方案7】:

          示例变体

          我想知道您为什么要尝试使用$line 数组作为 来访问$array_2d 中的数据。

          不管怎样,试试这个:

          echo($line['text_1'].'<br>');
          

          这个:

          echo($array_2d['text_1']['text_2'].'<br>');
          

          最后是这个(基于您的 $line 数组提供了 $array_2d 数组示例的键)

          $key_a = $line['text_1'];
          $key_b = $line['text_2'];
          echo($array_2d[$key_a][$key_b].'<br>');
          

          也可以这样写:

          echo($array_2d[$line['text_1']][$line['text_2']].'<br>');
          

          验证/转储数组内容

          要验证您的数组是否包含您期望的数据,请不要使用print_r。请改用var_dump,因为它会返回更多信息,您可以使用它来检查您认为可能遇到的任何问题。

          例子:

          echo('<pre>');
          var_dump($array_2d);
          echo('</pre>'); 
          

          var_dumpprint_r 之间的区别

          var_dump 函数显示变量(或表达式)的结构化信息,包括其类型。使用缩进显示结构的值递归地探索数组。 var_dump 还显示了哪些数组值和对象属性是引用。

          print_r 另一方面以可读的方式显示有关变量的信息,并且数组值将以显示键和元素的格式显示。但是您会错过var_dump 提供的详细信息。

          例子:

          $array = array('test', 1, array('two', 'more')); 
          

          print_r的输出:

          Array
          (
              [0] => test
              [1] => 1
              [2] => Array
                  (
                      [0] => two
                      [1] => more
                  )
          )
          

          var_dump的输出:

          array(3) {
            [0]=> string(4) "test"
            [1]=> int(1)
            [2]=> array(2) 
                  {
                      [0]=> string(3) "two"
                      [1]=> string(4) "more"
                  }
          }
          

          【讨论】:

            猜你喜欢
            • 2011-11-04
            • 2013-07-20
            • 1970-01-01
            • 1970-01-01
            • 2017-10-04
            • 2012-02-06
            • 2017-05-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多